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错误无法跳转

相关推荐
大志哥1238 小时前
IntelliJ IDEA父子工程中导入公网远程备份项目到新目录
java·ide·intellij-idea
廋到被风吹走8 小时前
【Spring】DefaultListableBeanFactory 详解
java·python·spring
东东的脑洞8 小时前
【面试突击八】Spring IOC:Bean 创建流程全解析(从 getBean 到 AOP 代理生成)
java·spring·面试
灰色人生qwer8 小时前
VS Code 配置Java环境
java·开发语言
tgethe8 小时前
Java 链表(LinkedList)
java·开发语言·链表
梁萌8 小时前
idea使用AI插件(CodeGeeX)
java·ide·ai·intellij-idea·插件·codegeex
东北小狐狸-Hellxz8 小时前
后端生成的URL中含base64参数值,经tomcat重定向后偶发前端无法解密报错
java·前端·tomcat
悟能不能悟8 小时前
java list怎么进行group
java·python·list
专注于大数据技术栈9 小时前
java学习--Math 类常用方法
java·学习
Lisonseekpan9 小时前
UUID vs 自增ID做主键,哪个好?
java·数据库·后端·mysql