求大神帮助,安全测试跨域资源共享问题该怎么解决?

我正在做的测试上传文件安全测试,网站其他的都没有跨域问题,都已经解决
就是上传文件的时候,一直被扫出有跨域问题,看了很多帖子都说浏览器会自动
屏蔽以下组合:
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
但是我的网站就是没有屏蔽,一直存在跨域问题,如图所示图片说明

即使修改了Access-Control-Allow-Origin的值,指定一个域名 可是用Chrome查看
会出现两条记录 一条是Access-Control-Allow-Origin带* 一条是Access-Control-Allow-Origin 指定的域名,求各位大神救救孩子吧,我太难了。。。

我用的是Nginx配置的。

我用的BurpSuite软件扫出来的安全漏洞,我看了一下 issue detail Access-Control-Allow-Origin带* 就是不安全的

我贴一下安全扫描报告

图片说明

图片说明

https://segmentfault.com/a/1190000012550346?utm_source=tag-newest
https://www.jianshu.com/p/89a377c52b48

这个不同的浏览器不一样,有的浏览器(特别是现代的浏览器)可能不会理会服务器的Access-Control-Allow-Origin
你找一个老一点的浏览器,比如IE11看看。对于新的浏览器,还需要用户手动在客户端允许跨域。

可以试试这样配置
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header Access-Control-Allow-Methods 'GET,POST';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';图片说明
把图中哪个换成上面的配置信息

好多网站 都是因为没有这个头部而发愁 楼主却恰恰相反。。。

首先这个头部是有大作用的 尤其是对于提供第三方查询服务器的网站 这个头部是必须的 没有这个头部反而是不对的。

楼主使用Burp扫出来的不安全 并不是说这个头部不安全 而是说Access-Control-Allow-Origin带* 就是不安全的

使用星号的话 就是自己的网站 可以让任何网站给自己发请求 并且都会返回信息 这个
任何人都可以给自己发请求肯定是不安全的
所以建议Access-Control-Allow-Origin:http://www.有必要访问自己资源的域名.com
设置成具体的域名。如果没有别的网站从自己这里获取信息 可以删除这个头部

至于楼主说的 设置具体域名之后 出现 两个 Access-Control-Allow-Origin

原因可能是 Nginx设置了 Access-Control-Allow-Origin

你的后端代码又设置了一遍 Access-Control-Allow-Origin

就是这个头部 不是只有Nginx才能设置的 代码也可以设置 比如Java PHP 都可以通过代码设置这个头部

下面是总结:如果有别人访问你的服务器的需求 就把Access-Control-Allow-Origin:设置为一个具体的域名

如果没有这种需求 就删除Access-Contro开头的所有头部

不管是设置一个域名 还是删除所有 都得记得检查两个地方
一个是Nginx配置里改了 然后找一个工具 全局搜索你的web项目,把项目代码里的设置也改了

然后重启Nginx 即可。