Tomcat 10.1.28中RequestFilterValve启动报错,无法修复路径分号漏洞
Tomcat 10.1.28配置RequestFilterValve启动失败问题解决建议
排查XML语法错误
- 检查
server.xml中<Valve>标签的双引号是否完全配对,避免存在缺失或多余的引号 - 确认标签闭合格式正确,自闭合标签需使用
/>而非单独的>,同时检查行尾是否存在不可见的特殊字符(如全角空格、异常换行符) - 验证正则表达式
^.*;.*$在XML中无需转义,直接写入即可
替换过滤方案(绕过RequestFilterValve加载问题)
如果确认XML语法无误但仍无法加载RequestFilterValve,可以改用以下两种替代方案:
方案1:使用RewriteValve实现URL过滤
- 在
<Host>节点下添加RewriteValve配置:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> </Host>
- 在对应Web应用的
WEB-INF目录下创建rewrite.config文件,写入规则:
RewriteCond %{REQUEST_URI} ^.*;.*$ RewriteRule ^ - [F]
该规则会拦截所有包含分号的URL并返回403状态码。
方案2:修改Connector的URI处理配置
在server.xml的<Connector>节点中添加参数,限制Tomcat对URL分号的解析:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" strictServletMapping="true" relaxedPathChars="" />
strictServletMapping="true":启用严格的Servlet映射规则,Tomcat会忽略URL分号后的内容,避免路径遍历relaxedPathChars="":不允许任何特殊字符,进一步限制非法URL格式
验证类文件存在性
检查Tomcat安装目录下lib/catalina.jar是否存在,且该jar包中包含org.apache.catalina.valves.RequestFilterValve类。若jar包损坏或缺失,重新下载对应版本的Tomcat替换该文件。
内容的提问来源于stack exchange,提问作者JPCharlie
相关产品推荐
相关产品推荐

