You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat下Improper Input Handling类Host Header攻击漏洞如何修复?

结论

你当前的配置不是防范Host头攻击的正确方案,核心问题是用错了Tomcat组件。

配置失效原因

  • 你用到的RemoteAddrValve是用于校验请求来源的客户端IP地址,和请求头中的Host字段完全无关,自然不会生效。
  • 当前虚拟主机的匹配逻辑错误:Tomcat会将请求的Host头和所有<Host>标签的name属性做匹配,匹配失败时才会走<Engine>标签中defaultHost属性指定的默认虚拟主机,你仅配置了name为defaultlocalhost的虚拟主机,没有指定它为默认主机,也没有单独配置合法域名对应的虚拟主机,规则自然无法命中。

正确配置方案

按照以下步骤配置即可实现非法Host头请求直接返回404,无302跳转:

  1. 先在<Engine>标签中设置defaultHost属性为拦截非法请求的专用虚拟主机名称,示例:
<Engine name="Catalina" defaultHost="blockIllegalHost">
  1. 配置你自己合法域名对应的虚拟主机,业务系统部署在这些虚拟主机下,示例:
<!-- 部署主站的合法虚拟主机 -->
<Host name="www.mywebsite.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <!-- 原有业务相关配置 -->
</Host>
<Host name="*.mywebsite1.com" appBase="webapps-mywebsite1" unpackWARs="true" autoDeploy="true">
</Host>
<Host name="*.mywebsite2.com" appBase="webapps-mywebsite2" unpackWARs="true" autoDeploy="true">
</Host>
  1. 配置拦截非法Host请求的默认虚拟主机,所有Host头不匹配上述合法域名的请求都会进入该主机,直接返回404即可,示例:
<Host name="blockIllegalHost" appBase="empty" unpackWARs="false" autoDeploy="false">
    <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
    <rewrite>
        <rule>
            <from>^.*$</from>
            <to status="404">-</to>
        </rule>
    </rewrite>
    <!-- 隐藏Tomcat版本信息,可选配置 -->
    <Valve className="org.apache.catalina.valves.ErrorReportValve"
           showReport="false"
           showServerInfo="false" />
</Host>

配置完成后重启Tomcat即可生效。

内容的提问来源于stack exchange,提问作者Pradeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:39:00