PCI Security 扫描报告有内部IP泄漏的问题。
调查后发现,HTTP 1.0的请求,请求头部Host为空,同时有HTTP 302 重定向的情况下,Jetty无法判断重定向的URL中主机名,从而使用本机IP。
下面的请求,指定使用HTTP 1.0,同时故意将 Host 设置为空,可以揭示这个问题:
andyhan@ML:% curl https://www.xxx.com/ssss -I --http1.0 --Header 'Host:'
HTTP/1.1 302 Found
Content-Type: text/html
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Location: https://10.110.11.11:8081/error.jsp
Content-Length: 0
修复这个问题需要在web 服务器中设置默认的hostname,我们使用的是Jetty,所以有下面的设置,给hostname 设置了一个固定的值(这种方式不是最好方法):
<SystemProperty name="jetty.defaultServerName" default="www.xxx.com" />
这种方式仅仅是防止HTTP 1.0下 内部IP泄漏,考虑到HTTP v1.0 几乎绝迹,因而这种方式仍可行。