无源码场景下,如何在JBoss EAP 7中禁用HTTP Method Override
解决JBoss EAP 7中HTTP Method Override漏洞的纯配置方案
方案1:通过web.xml移除指定请求头
利用JBoss内置的HttpHeaderFilter过滤器,在应用的web.xml中添加以下配置,直接拦截并移除三个风险请求头:
<filter> <filter-name>RemoveMethodOverrideHeaders</filter-name> <filter-class>org.jboss.as.web.security.HttpHeaderFilter</filter-class> <init-param> <param-name>removeHeaders</param-name> <param-value>X-HTTP-METHOD,X-HTTP-Method-Override,X-METHOD-OVERRIDE</param-value> </init-param> </filter> <filter-mapping> <filter-name>RemoveMethodOverrideHeaders</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
该过滤器是JBoss EAP自带组件,无需编写额外代码,配置后会覆盖所有请求路径,自动移除指定的方法覆盖请求头。
方案2:通过JBoss standalone.xml全局配置
如果需要对服务器上所有部署的应用生效,可修改standalone.xml中的Undertow子系统配置:
- 在
<subsystem xmlns="urn:jboss:domain:undertow:*">下的<filters>节点中添加请求头移除处理器:
<filter name="remove-method-override-headers" class-name="io.undertow.server.handlers.RequestHeaderHandler"> <param name="remove" value="X-HTTP-METHOD,X-HTTP-Method-Override,X-METHOD-OVERRIDE"/> </filter>
- 在
<host name="default-host" alias="localhost">节点中引用该过滤器:
<host name="default-host" alias="localhost"> <!-- 保留原有配置内容 --> <filter-ref name="remove-method-override-headers"/> </host>
生效与验证
配置完成后重启JBoss EAP 7服务器,可通过发送包含目标请求头的测试请求,检查服务器是否不再响应方法覆盖逻辑,或查看服务器日志确认请求头已被移除。
内容的提问来源于stack exchange,提问作者Eric Lee
相关产品推荐
相关产品推荐

