• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

java项目请求url存在特殊字符 400错误

武飞扬头像
背儿头
帮助2

java项目请求url特殊字符 400错误

1 现象

请求路径带特殊字符,就会400错误,这就泄露了服务器版本和报错信息,无疑是敏感信息泄露,实属安全漏洞。

补充项目环境:springmvc、tomcat 8.5.59
学新通

2 原因

经排查和报错信息得知,该请求是被tomcat解析报错的,还没有到我们的程序里面。

而Tomcat严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = $ , / ? # [ ])。传入的参数中有"[]“、”"不在RFC3986中的保留字段中,所以会报这个错。

3 解决方案

3.1 方案一 降低tomcat版本

tomcat7.9以下版本

3.2 方案二 修改tomcat的配置文件,允许url存在指定特殊字符

在server.xml文件中 Connector标签增加 relaxedQueryChars=“[]|{}^\`”<>" 属性,最终如下

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;" redirectPort="8443" />

但是需要把所有的特殊字符都加上才可以。

3.3 方案三 修改tomcat配置隐藏报错敏感信息

在此上方,它将为您提供状态报告信息(HTTP状态)和服务器信息。因此,您可以在Tomcat服务器的conf 中使用server.xml对其进行配置

默认的Catalina错误报告阀门和配置:org.apache.catalina.valves.ErrorReportValve

属性 描述
showReport 如果发生错误,用于在错误页面上显示错误信息(状态代码及其信息)的标志。默认值是true
showServerInfo 如果发生任何错误,则用于在错误页面上显示当前服务器信息的标志。默认值是true

现在,添加/更新以下内容以在**** 中的server.xml中进行配置。

<Valve className="org.apache.catalina.valves.ErrorReportValve"  showReport="false" showServerInfo="false" />

这种方法只会显示

只会显示出HTTP 400 错误,不会打印堆栈和tomcat版本号信息

学新通

3.4 方案四 修改nginx配置文件的错误页

在nginx.conf文件中配置如下配置,这个配置目的是,响应400会转发的400.html,达到屏蔽掉tomcat默认错误配置页的效果。

error_page   400  /400.html;
location = /400.html {
root   html;
}

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcaaka
系列文章
更多 icon
同类精品
更多 icon
继续加载