The valid characters are defined in RFC 7230 and RFC 3986
发布日期:2021-06-30 17:38:27
浏览次数:2
分类:技术文章
本文共 4303 字,大约阅读时间需要 14 分钟。
问题分析:
问题出现的原因是URL中包含了非法字符,这个问题可能是由于升级tomcat版本导致
解决方案:
1、降级Tomcat版本
tomcat7及以下可以。
2、规范代码,URL编码
encodeURI("http://localhost:8080/app/handleResponse?msg=name|id|")> http://localhost:8080/app/handleResponse?msg=name%7Cid%7C关键代码encodeURIComponent("msg=name|id|")
3、Tomat增加配置
这些设置不好使。。。
#这个是解决URL中包含%2F的问题 org.apache.tomcat.util.buf.UDecoder.ALLOW_ENC_ENCODED_SLASH=true #这个是解决URL中包含%5C的问题 org.apache.catalina.connector.CoyoteAdapter.ALLOW_BAC_BACKSLASH=true #=号后面加可以过滤的字符tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
需要注意的是修改了配置参数会触发XSS漏洞!
最后在这里找到答案
down voteWe found the same issue . After analyzing the issue , found the solution . Below are the details for issue and solution.Issue: Tomcat (7.0.88) is throwing below exception which leads to 400 – Bad Request. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986. This issue is occurring most of the tomcat versions from 7.0.88 onwards.Solution: (Suggested by Apache team):Tomcat increased their security and no longer allows raw square brackets in the query string. In the request we have [,] (Square brackets) so hotel request is not processing by server.As a solution below are the steps needs to be incorporate to make it work as expected. 1. We need to add relaxedQueryChars attribute under tag under server.xml (%TOMCAT_HOME%/conf)If application needs more special characters which is not supported by tomcat by default then we need add those special characters in relaxedQueryChars attribute with comma separated as above.
relaxedQueryChars="[,]"
这个是关键的配置,"[,]"表示过滤“[”和"]",如果还有别的符号需要过滤,逗号隔开即可,tomcat8.0.53测试通过。
RFC 3986 文档规定,Url中只允许包含
英文字母(a-z,A-Z)、数字(0-9)、- _ . ~ 4个特殊字符保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]不安全字符 还有一些字符,当他们直接放在Url中的时候,可能会引起解析程序的歧义。这些字符被视为不安全字符,原因有很多。
典型的有:
“{}”JSON格式数据“\/”路径分隔符空格,Url在传输的过程,或者用户在排版的过程,或者文本处理程序在处理Url的过程,都有可能引入无关紧要的空格,或者将那些有意义的空格给去掉<>引号和尖括号通常用于在普通文本中起到分隔Url的作用# 通常用于表示书签或者锚点% 百分号本身用作对不安全字符进行编码时使用的特殊字符,因此本身需要编码{ } | \ ^ [ ] ` ~ 某一些网关或者传输代理会篡改这些字符转义 如果要在url里使用不安全字符,就需要使用转义。 附上ASCII字符与URL编码的对照表,如下:
ASCII字符 URL编码 空格 %20 ! %21 " %22 # %23 $ %24 % %25 & %26 ' %27 ( %28 ) %29 * %2A + %2B , %2C - %2D . %2E / %2F 0 %30 1 %31 2 %32 3 %33 4 %34 5 %35 6 %36 7 %37 8 %38 9 %39 : %3A ; %3B < %3C = %3D > %3E ? %3F @ %40 A %41 B %42 C %43 D %44 E %45 F %46 G %47 H %48 I %49 J %4A K %4B L %4C M %4D N %4E O %4F P %50 Q %51 R %52 S %53 T %54 U %55 V %56 W %57 X %58 Y %59 Z %5A [ %5B \ %5C ] %5D ^ %5E _ %5F ` %60 a %61 b %62 c %63 d %64 e %65 f %66 g %67 h %68 i %69 j %6A k %6B l %6C m %6D n %6E o %6F p %70 q %71 r %72 s %73 t %74 u %75 v %76 w %77 x %78 y %79 z %7A { %7B | %7C } %7D ~ %7E %7F € %80 %81 ‚ %82 ƒ %83 „ %84 … %85 † %86 ‡ %87 ˆ %88 ‰ %89 Š %8A ‹ %8B Œ %8C %8D Ž %8E %8F %90 ‘ %91 ’ %92 “ %93 ” %94 • %95 – %96 — %97 ˜ %98 ™ %99 š %9A › %9B œ %9C %9D ž %9E Ÿ %9F %A0 ¡ %A1 ¢ %A2 £ %A3 %A4 ¥ %A5 | %A6 § %A7 ¨ %A8 © %A9 ª %AA « %AB ¬ %AC ¯ %AD ® %AE ¯ %AF ° %B0 ± %B1 ² %B2 ³ %B3 ´ %B4 µ %B5 ¶ %B6 · %B7 ¸ %B8 ¹ %B9 º %BA » %BB ¼ %BC ½ %BD ¾ %BE ¿ %BF À %C0 Á %C1  %C2 à %C3 Ä %C4 Å %C5 Æ %C6 Ç %C7 È %C8 É %C9 Ê %CA Ë %CB Ì %CC Í %CD Î %CE Ï %CF Ð %D0 Ñ %D1 Ò %D2 Ó %D3 Ô %D4 Õ %D5 Ö %D6 %D7 Ø %D8 Ù %D9 Ú %DA Û %DB Ü %DC Ý %DD Þ %DE ß %DF à %E0 á %E1 â %E2 ã %E3 ä %E4 å %E5 æ %E6 ç %E7 è %E8 é %E9 ê %EA ë %EB ì %EC í %ED î %EE ï %EF ð %F0 ñ %F1 ò %F2 ó %F3 ô %F4 õ %F5 ö %F6 ÷ %F7 ø %F8 ù %F9 ú %FA û %FB ü %FC ý %FD þ %FE ÿ %FF
在线验证工具
转载地址:https://lemonstone.blog.csdn.net/article/details/83151518 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月30日 02时50分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JavaScript原生开关灯效果
2019-04-30
企业邮箱如何申请注册,邮箱申请如何免费注册?
2019-04-30
微信企业邮箱,手机邮箱格式地址怎么写?
2019-04-30
公司如何申请企业邮箱,公司邮箱怎么申请,公司企业邮箱哪个好?
2019-04-30
电子邮箱账号怎么申请,怎样申请邮箱账号呢
2019-04-30
邮箱怎么发邮件,邮件发信量多少,职场新人怎么发汇报邮件呢?
2019-04-30
maven 多层次pom 新引入包,编译成功,还是没有将包引入到本地
2019-04-30
leetCode2 两数相加
2019-04-30
【工具使用】使用pip与conda安装、更新与卸载Pytorch和torchvision
2019-04-30
【工具使用】Google免费云环境Colaboratory使用
2019-04-30
【深度学习笔记】卷积层,全连接层,池化层的相关输出参数计算
2019-04-30
【NLP学习笔记】文本分类概述
2019-04-30
【深度学习笔记】文本分类
2019-04-30
【转载】炼丹实验室:深度学习网络调参技巧
2019-04-30
【论文阅读笔记】文本分类论文汇总
2019-04-30
【NLP学习笔记】One-hot encoding:独热编码
2019-04-30