我正在尝试通过 PCI 合规性测试,但收到一个“高风险漏洞”。
问题描述如下:
网页的标题中有时会包含有关 Web 服务器所在机器的信息。在某些情况下,该信息可能包括防火墙或代理服务器后面的本地信息,例如本地 IP 地址。
看起来 Nginx 正在响应:
Service: https
Received: HTTP/1.1 302 Found
Cache-Control: no-cache
Content-Type: text/html; charset=utf-8
Location: http://ip-10-194-73-254/
Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
Status: 302 X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
X-Runtime: 0
Content-Length: 90
Connection: Close <html><body>You are being <a href="http://ip-10-194-73-254/">redirect ed</a>.</body></html>
我不是专家,所以如果我错了,请纠正我:但从我收集的信息来看,我认为问题在于标题Location
返回的http://ip-10-194-73-254/
是私人地址,而它应该返回我们的域名(即 ravn.com)。
所以,我猜我需要以某种方式隐藏或替换Location
标题?我是一名程序员,而不是服务器管理员,所以我不知道该怎么做……任何帮助都将不胜感激!另外,我要补充一点,我们正在运行多台服务器,因此配置需要可转移到任何具有任何私有地址的服务器。
答案1
嗯,302 Found
是 HTTP 重定向状态,所以您被重定向了。您不是被重定向的,nginx
而是由后台软件nginx
(据我所知,是在 Phusion Passenger 上运行的 Ruby 应用程序)重定向的,因为有X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
由后端应用程序添加的标头( ),而不是nginx
。因此,您应该检查 Ruby 应用程序的源代码以找出导致重定向的原因。您被重定向到的地址无论如何都无法从公共网站访问,因此这不是漏洞,而是一种配置错误。