如何安全的HTTP请求方法

时间:2014-06-08 11:38:51

标签: php ajax httprequest

当使用GET方法接收JSON数据时,我们可以直接从Web浏览器中获取结果,例如我将ajax中的mydata值发送到main.php文件并进行处理并得到答案显示结果如下所示:

<?php 

if (isset($_GET["mydata"])) {
if ($_GET["mydata"]=="hello"){
echo "hello world";

} 
}

?>

但是当用户直接在浏览器中调用它时,如http:mysite.com/mydata.php?mydata=hello recive answer。我想不要让用户直接得到http请求的答案,只是可以从主页的ajax结果显示它是否可能?

1 个答案:

答案 0 :(得分:1)

您正在询问如何通过将URL复制粘贴到Web浏览器中来防止直接访问仅限Ajax的请求;也就是说,只允许通过主网页上的ajax访问URL。

嗯,你可以尝试一些事情:

  1. 使用$_SERVER['HTTP_REFERER']
  2. 检查推荐人的主页网址
  3. 使用xhr.setRequestHeader()在Javascript中设置标题,然后通过在PHP中检查$_SERVER['HTTP_X_....']确保其值
  4. 与Jay Bhatt建议一样,检查X_REQUESTED_WITH标题,但请注意,这可能并不总是设置(请参阅:X-Requested-With header not set in jquery ajaxForm plugin
  5. 但是,在任何这些情况下,您应该知道任何知道自己在做什么的人都可以轻松设置任何HTTP标头,变量,甚至修改发送到服务器的引用者。因此,没有100%保证您的资源只能通过主网页上的AJAX 访问。互联网上没有内置控件来验证请求的来源,因此任何人都可以轻易地欺骗或伪造它。