允许跨域Ajax请求(allow cross domain ajax requests)

2019-07-03 19:44发布

在我的项目,我需要让其他人发送Ajax请求给我的脚本。 所以,外部的请求可能来自其他网站和域名,也许从浏览器扩展。
我简单地加在我的剧本,让他们去做的顶部两行:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');  

现在我的问题是这样的:在这里的任何安全考虑,我错过了什么? 这是否简单的解决方案使严重的问题?
如果是这样,有什么更好的解决办法?

感谢您的答复。

Answer 1:

正如上面提到的,任何人都可以在任何时间请求发送到你网页:所以你需要的主要安全问题是验证用户输入,并只透露是供大众消费的信息。 但是,这适用于所有脚本。

你需要专注于(验证用户输入后)的两个主要问题是:

  1. 你可能有问题是接收信息到他们的脚本的用户。 根据浏览器(甚至是同一浏览器的口味之间)存在阻止他们获得的信息传回不同的安全规则。 这种常见的解决方案是提供信息反馈为“JSONP”这是你的包裹返回值可以由客户端执行的函数调用。 这里有一个简单的例子(取自http://www.geekality.net/2010/06/27/php-how-to-easily-provide-json-and-jsonp/ )。 为了进一步锁定了,你能坚持,所有查询都JSONP和拒绝任何人不发送回调函数。

<?php

header('content-type: application/json; charset=utf-8');
$data = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
echo $_GET['callback'] . '('.json_encode($data).')';

?>
  1. 有人拨打过定期滥用您服务。 该解决方案是陷阱的IP地址和拒绝,如果你得到一个IP地址了太多的电话。 并非万无一失,但它是一个开始。

其他因素要牢记:

  • 通过你的脚本设置的cookie和其它标题可能会被忽略
  • 同样适用于会议


Answer 2:

就像zerkms说,如果他们只是“走出去”你的PHP页面,他们将能够看到什么它回声出来。 如果这是可能的 (不知道它是),它也将让不需要的人即使在本地主机创建自己的形式,并通过AJAX提交他们得到他们想要的答复。如果这是确定和你在一起,并且信息是模糊的/无害......然后,我想这将是“安全的”。 这是不正常的方法来获取/传输敏感信息



Answer 3:

private function set_headers() {
    header("HTTP/1.1 ".$this->_code." ".$this->get_status_message());
    header("Content-Type:".$this->_content_type);           
    header("Access-Control-Allow-Origin: *");
}


文章来源: allow cross domain ajax requests