首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止篡改AJAX进程页面?

如何防止篡改AJAX进程页面?
EN

Stack Overflow用户
提问于 2011-01-31 08:57:47
回答 3查看 1.1K关注 0票数 0

我正在使用Ajax来处理JQUERY。Data_string被发送到我的process.php页面,并保存在那里。

问题:现在任何人都可以直接输入example.com/process.php来访问我的流程页面,或者输入example.com/process.php/var1=foo1&var2=foo2来模拟表单提交。如何防止这种情况发生?

另外,在Ajax代码中,我指定了POST。这里POST和GET的区别是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-31 09:55:23

正如Jason LeBrun所说,阻止人们模拟表单提交几乎是不可能的,但你至少可以停止这种不经意的尝试。除了实现Nazariy的建议(如果您真的想要的话,这两个建议都很容易实现),您还可以在服务器端生成一些惟一的值(我称之为令牌),将其插入到与Ajax相同的页面中。然后,Ajax会将该令牌与其他参数一起传递给process.php页面,这样您就可以检查该令牌是否有效。

更新

有关令牌,请参阅此问题

anti-CSRF token and Javascript

票数 1
EN

Stack Overflow用户

发布于 2011-01-31 09:28:23

首先,通过POST提交AJAX表单,并在服务器端确保请求来自相同域,并通过AJAX调用。

对于这个任务,我的库中有几个函数

代码语言:javascript
复制
function valid_referer()
{
    if(isset($_SERVER['HTTP_REFERER']))
        return parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) == $_SERVER['SERVER_NAME'];
    else
        return false;
}

function is_ajax()
{
    $key = 'HTTP_X_REQUESTED_WITH';

    return isset($_SERVER[$key]) && strtolower($_SERVER[$key]) == 'xmlhttprequest';
}

您可以阅读有关post和get之间区别的this post

票数 2
EN

Stack Overflow用户

发布于 2011-01-31 09:40:59

您不能阻止他人在您的网站上手动模拟表单数据的提交。你可以任意地让它变得更难,但你不能完全阻止它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4846852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档