Tomcat8版本以上配置自定义400错误页面

问题:当请求URL包含特殊字符时,Tomcat会自动拦截并返回400状态码页面,暴露了tomcat的版本信息,这是很严重的安全漏洞。

java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义

解决办法:

  1. 屏蔽打印的异常和Tomcat版本信息,在Tomcat -> conf -> server.xml中加入如下配置:
xml 复制代码
`<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />`

再次请求就只会打印一个标题了,屏蔽了重要信息。

  1. 重定向到自定义的400_error.html页面,在Tomcat -> conf -> server.xml中加入如下配置:
xml 复制代码
<Valve className="org.apache.catalina.valves.ErrorReportValve" errorCode.400="webapps/ROOT/400_error.html"/>

在webapps -> ROOT项目下新建一个自定义的HTML页面,例如我的是400_error.html

再次请求就会重定向到你的自定义页面了。

参考大佬的文章链接:
tomcat8 url包含|等特殊字符报错400的问题
tomcat9 400错误无法跳转

相关推荐
choumou_M6 小时前
SpringBoot_7:用户资源的上传与修改
java·spring boot·后端
user_admin_god6 小时前
一体化数据归集接口详细设计说明
java·大数据·spring boot·后端·spring
LlmCraft|大模型工程实践7 小时前
08. Docker Compose 一键编排:多容器应用的指挥家
java·spring cloud·eureka
珍珠先生7 小时前
第14章 设计模式入门:单例、工厂、建造者与代理
java
坐吃山猪7 小时前
JDK 8 到 JDK 21 新特性知识要点
java·开发语言·windows
坐吃山猪7 小时前
【多线程】FutureTask多线程底层实现
java·开发语言·数据库
weixin199701080167 小时前
[特殊字符]《从0到1:闲鱼开放平台授权登录 + AccessToken 刷新 + 聚石塔部署完整链路》(附Python源码)
java·数据库·python
Freak嵌入式7 小时前
RP2040 PIO 编程模型与状态机原理:从硬件架构到工作逻辑全解析
java·大数据·开发语言·单片机·嵌入式硬件·硬件架构
kakawzw8 小时前
Netty源码笔记
java·服务器·后端
zhuodedao8 小时前
Spring AI + MCP 文件工具未调用问题复盘:为什么初始化成功却没有写入文件?
java·debug·agent·springai·mcp