专栏首页老付的网络博客Tomcat不安全字符的处理

Tomcat不安全字符的处理

做项目的时候碰到一个问题,就是Tomcat在处理含有|,{,}的字符的Url时候,发现请求没有到达指定的Controller上面,而在Access_log中写入了get null null 400的错误信息,从网上也翻了几个资料最终确定是tomcat的一个问题(个人觉得也是一个缺陷)

问题的由来

Tomcat根据rfc的规范Url中不能有类似|,{,}等不安全字符串,但在实际的操作中有时为了数据完整性和加密的方式都需要有|,{,}出现,这样的话Tomcat会直接告诉客户端Bad Request.

对于这个问题,很多人也提出很多不同的看法:https://bz.apache.org/bugzilla/show_bug.cgi?id=60594,经过修改,最终Tomcat把权限开放出来,通过tomcat.util.http.parser.HttpParser. requestTargetAllow这个配置选项,允许不安全字符的出现。Tomcat详细配置

解决方法

经过几次探索,有以下几个方法能够解决这个问题:

  1. 把请求的Url进行编码,这个对源头进行处理,来规避这个问题,如果是第三方来调用的url就无能无力。
  2. 修改Tomcat的配置文件(Tomcat\conf\catalina.properties),适用tomcat 7以上的版本
    tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
 

3. 使用其它服务器进行中转,比如IIS和Apache

(本文完)

作者:老付 如果觉得对您有帮助,可以下方的订阅,或者选择右侧捐赠作者,如果有问题,请在捐赠后咨询,谢谢合作 如有任何知识产权、版权问题或理论错误,还请指正。 自由转载-非商用-非衍生-保持署名,请遵循:创意共享3.0许可证 交流请加群113249828:点击加群 或发我邮件 laofu_online@163.com

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入volatile关键字

    在Java多线程中,有一个特殊的关键字volatile,这个通常成为一个“轻量级锁”,下面我们就来深入的了解这个关键的作用和原理。

    付威
  • Elasticsearch head的安装

    Elasticsearch head是操作es的界面,可以在可视化界面上面管理es的索引和类型。

    付威
  • Vuejs template快速入门

    一直想写一个Vuejs的系列的博客,苦于一直没有时间,今天的这个博客也是思考了很久,打算随便写点东西,今天说说Vuejs的模版的使用。

    付威
  • Tomcat的设置

    因为logging默认使用utf-8,而我们的windows的日志输出控制台使用系统的GB2312,所以去conf中修改logging的配置编码为GB2312即...

    Howl
  • Win10安装Tomcat服务器与配置环境变量

    Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JS...

    Java架构师必看
  • IDEA配置Tomcat服务器并创建Java Web项目

    AlicFeng
  • FocusNet:解决小器官难分割问题(MICCAI 2019)

    今天分享一篇发表在MICCAI 2019上的关于医学影像处理中小器官分割的论文:FocusNet: Imbalanced Large and Small Org...

    Minerva
  • 斐波那契数列的算法分析

    看过我其他一些文章的人,可能想象不出我会写一篇关于斐波那契数列的文章。因为可能会感觉1,1,2,3…这样一个数列能讲出什么高深的名堂?嗯,本篇文章的确是关于斐氏...

    窗户
  • 探索 JUC 之美---可重入读写锁 ReentrantReadWriteLock可重入读写锁 ReentrantReadWriteLock实现AQS只有一个状态,那么如何表示 多个读锁 与 单个写锁

    JavaEdge
  • 2018科技加公益你了解吗-汇新杯新兴科技+互联网创新大赛

    我们常常说的“社会公益”,主要是对接济贫困、提倡互助互爱、维护社会稳定起一定作用解决社会问题的行为,能够促进社会进步,是社会救济和福利事业的组成部分

    创成汇创新创业大赛

扫码关注云+社区

领取腾讯云代金券