我从jquery到我自己的服务器中的php脚本进行ajax调用,如:$.ajax({ url: 'ajax.php', ....
它可以直接保护这个文件的执行吗?我的意思是,如果从调用文件ajax.php,只允许代码开始的一些IF语句允许在origin.html中写入的jquery脚本而不是直接调用该文件吗?
感谢您的帮助!
答案 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.
}
答案 1 :(得分:1)
如果您确保页面仅使用$_POST['']
RATHER THAN $_GET[''] / $_REQUEST['']
变量接收传递的变量,则可以作为第一道防线。
这是因为POST很难伪造,变量无法通过像http://website.com?variable=hacked
答案 2 :(得分:1)
如果您想要100%确定,那么您必须为此进行某种身份验证。一种选择是将随机密钥存储在具有ajax脚本的页面的数据库中。然后将该密钥传递给ajax.php文件。在ajax文件中,检查密钥是否在数据库中。如果是,请运行脚本,删除密钥。如果它现在在数据库中,则它不是有效请求。