保护从ajax调用的php脚本的执行

时间:2011-10-12 10:06:42

标签: php jquery ajax

  

可能重复:
  how to protect ajaxRequest.open php script

我从jquery到我自己的服务器中的php脚本进行ajax调用,如:$.ajax({ url: 'ajax.php', ....

它可以直接保护这个文件的执行吗?我的意思是,如果从调用文件ajax.php,只允许代码开始的一些IF语句允许在origin.html中写入的jquery脚本而不是直接调用该文件吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
 // code that has to be executed in response to ajax req.
}

参考:AJAX only access

答案 1 :(得分:1)

如果您确保页面仅使用$_POST[''] RATHER THAN $_GET[''] / $_REQUEST['']变量接收传递的变量,则可以作为第一道防线。

这是因为POST很难伪造,变量无法通过像http://website.com?variable=hacked

这样的URL直接传递到代码中

答案 2 :(得分:1)

如果您想要100%确定,那么您必须为此进行某种身份验证。一种选择是将随机密钥存储在具有ajax脚本的页面的数据库中。然后将该密钥传递给ajax.php文件。在ajax文件中,检查密钥是否在数据库中。如果是,请运行脚本,删除密钥。如果它现在在数据库中,则它不是有效请求。