Php 允许跨域ajax请求

Php 允许跨域ajax请求,php,ajax,cross-domain,Php,Ajax,Cross Domain,在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展。 我只是在脚本的顶部添加了这两行代码,让他们可以这样做: header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST'); 现在我的问题是:这里有没有我遗漏的安全考虑?这个简单的解决方案会带来严重的问题吗? 如果是这样,更好的解决方案是什么 感谢您的回复。正

在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展。
我只是在脚本的顶部添加了这两行代码,让他们可以这样做:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');  
现在我的问题是:这里有没有我遗漏的安全考虑?这个简单的解决方案会带来严重的问题吗?
如果是这样,更好的解决方案是什么


感谢您的回复。

正如zerkms所说,如果他们只是“转到”您的php页面,他们将能够看到它发出的任何回声如果可能的话(不确定),它还将允许不需要的人创建自己的表单,甚至在本地主机上,并通过AJAX提交表单以获得他们想要的响应。。如果你同意,而且信息不明确/无害。。。那么我想它是“安全的”。获取/传输敏感信息不是一种好方法。如上所述,任何人都可以随时向您的页面发送请求:因此,您需要的主要安全问题是验证用户输入,并且只显示可供公众使用的信息。但这适用于所有脚本

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

  • 您可能遇到的问题是用户将信息接收到他们的脚本中。根据不同的浏览器(甚至是同一浏览器的不同风格),有不同的安全规则阻止他们取回信息。一个常见的解决方案是以“JSONP”的形式提供信息,即将返回值包装为可由客户端执行的函数调用。这里有一个简单的例子(摘自)。为了进一步锁定它,您可以坚持所有查询都是JSONP,并拒绝任何不发送回调函数的查询
  • 
    
  • 有人经常打电话滥用你的服务。解决方案是捕获IP地址,并在从IP地址收到太多呼叫时拒绝。不是万无一失的,但这只是一个开始 要记住的其他因素:

    • 脚本设置的cookie和其他标题可能会被忽略
    • 这同样适用于会议

      • 这对我来说非常有效

        header('Access-Control-Allow-Origin: *');
        header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
        header("Allow: GET, POST, OPTIONS, PUT, DELETE");
        $method = $_SERVER['REQUEST_METHOD'];
        if($method == "OPTIONS") {
            die();
        }
        

        你应该记住,如果你的脚本泄露了任何个人信息,现在任何人都可以窃取。你能解释更多吗?这怎么可能?这些头球有魔力吗?阿里:如果我创建了一个执行ajax请求的页面,给你一个链接并发送给你,那么我就可以从该端点获取任何你可以获取的信息。你希望外部请求访问什么?听起来你应该写一个API。这个脚本提供的信息和
        echo()
        都不敏感。我想知道是否有更好的解决方案如果它不是“敏感的”,并且是可能的,理论上,除了服务器端通信之外,在没有客户端信息获取的情况下,我看不到更好的解决方案。比如一个ajax调用,它可能会调用您自己服务器上的一个php文件,说php文件会工作,联系其他服务器,并返回结果,就客户端而言,一切都发生在您的端,并且没有第三方参与。请注意用户输入!
        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: *");
        }
        
        header('Access-Control-Allow-Origin: *');
        header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
        header("Allow: GET, POST, OPTIONS, PUT, DELETE");
        $method = $_SERVER['REQUEST_METHOD'];
        if($method == "OPTIONS") {
            die();
        }