因为Host的属性是客户端生成的,那么客户端的输入往往是不可靠的,但为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。这个header是不可信赖的,如果应用程序没有对host header进行处理,就有可能造成恶意代码的传入。
修复方法:
可修改
Tomcat修复:修改tomcat下的conf/server.xml文件
HOST的name修改为静态的域名,将第一行localhost修改成域名或者ip
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%{X-Real-IP}i %h %l %u %t "%r" %s %b" />
</Host>