tomcat设置预防host头攻击
tomcat设置预防host头攻击
- 1 host攻击
- 2 解决办法
1 host攻击
就是我请求的时候 改变header中的host的值 也能访问成功
正确的
curl -H "Host: www.yq.com" http://www.yq.com:8080/
错误的 给一个百度的域名
curl -H "Host: www.baidu.com" http://www.yq.com:8080/
这样也能访问成功 但是这样是不正确的,正确的应该访问不了 避免产生安全隐患
2 解决办法
修改tomcat的server.xml配置
<Engine name="Catalina" defaultHost="invalid.host"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm>
<Host name="www.yq.com" appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /><Alias>192.168.18.60</Alias><Alias>127.0.0.1</Alias
</Host>
<Host name="invalid.host" appBase="webapps/none" unpackWARs="true" autoDeploy="false"><Valve className="org.apache.catalina.valves.ErrorReportValve" errorCode.400="Invalid Host" />
</Host>
</Engine>
修改地方
1 首先就是Engine 的defaultHost不使用默认的localhost 而是自定义一个Host,这样就能统一处理这个错误
2 修改Host 的name 把localhost改成域名地址 然后加上白名单Alias就是本机的ip和本地
3 定义一个错误的Host
修改以后重启就行