针对 Apache Struts 1 的 CVE-2014-0114 请求参数过滤器解决方案,基于 Alvaro Munoz 与 HP Fortify 团队 的工作。
要使用此过滤器,请将以下过滤器声明及相应映射添加到要保护的 Apache Struts 1 应用程序的 web.xml 描述符中:
<filter>
<filter-name>ParamWrapperFilter</filter-name>
<filter-class>net.rgielen.struts1.filter.ParamWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ParamWrapperFilter</filter-name>
<servlet-name>YOUR ACTION SERVLET</servlet-name>
</filter-mapping>
该过滤器自带一个默认正则表达式,用于匹配有害的参数名称, 可通过显式配置进行覆盖:
<filter>
<filter-name>ParamWrapperFilter</filter-name>
<filter-class>net.rgielen.struts1.filter.ParamWrapperFilter</filter-class>
<init-param>
<param-name>excludeParams</param-name>
<param-value>(.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*</param-value>
</init-param>
</filter>
...
该过滤器已发布到 Maven Central。使用以下 Maven 依赖声明将其集成到您的项目中 (Ivy、Gradle 和 SBT 也一样):
<dependency>
<groupId>net.rgielen</groupId>
<artifactId>struts1filter</artifactId>
<version>1.0.0</version>
</dependency>
也可以直接下载。使用 Central Repository Search 配合上述坐标 查找并下载 jar 文件。