访问控制允许来源:当我在 Nginx 和 Tomcat 中设置值时检测到空



WebInspect检测到目标应用程序支持CORS请求的"Origin:null",使其容易受到CORS攻击。这是漏洞扫描报告的一个重要问题
我已经设置了相应的头值"访问控制允许来源:*.example.com">,但仍然被检测为null
但是,如果通过浏览器进行检查;访问控制允许来源:*.example.com";已经显示在响应标头中,为什么扫描报告中仍然存在空值?这会是一个错误的问题吗

nginx.conf中的

location /frontend{
add_header Access-Control-Allow-Origin *.example.com
}

浏览器响应标头:
HTTP/1.1 200
Server: nginx
Date: Mon, 08 Nov 2021 04:05:21 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Last-Modified: Wed, 03 Nov 2021 07:16:34 GMT
ETag: W/"0d4a4d79789d33107032637b2af5c74f1"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Access-Control-Allow-Origin: *.example.com
Content-Encoding: gzip

扫描报告的图像显示"原点:空">

快速回答:
将设置放在nginx.conf

location /frontend{
proxy_set_header Origin '*.example.com';
}

解释:
扫描报告显示了攻击请求是如何设置的,因此使用Postman模拟所有请求头值,看看nginx实际响应了什么,会让事情变得清楚
结果是,使用请求标头Origin:null,响应显示两个Access Control Allow Origin。一个是null、另一个是*.example.com并且null覆盖nginx.conf中的add_header Access-Control-Allow-Origin *.example.com设置,因为在项目中有一个设置CorsConfigurationSource.setAllowedOrigins(Arrays.asList("*"))的Spring Configuration,其指示访问控制允许起源的所有响应报头将是起源中的任何请求。因此,使用proxy_set_header在传递给nginx的请求头中重新定义Origin。

相关内容

  • 没有找到相关文章