0

使用 1.tomcat 2.spring jersey 集成

路径中的 uri 片段之一包含一个“/”,我通过将其替换为 %2f 正确地对其进行了转义。但是,请求永远不会在我的请求处理器上正确着陆。

示例 URI

/persons/bad_person_identifier%2fabcd

一个人的唯一标识符可能是“bad_person_identifier/abcd”

4

2 回答 2

1

原来是tomcat 6.x的问题

解决方法:就是设置启动tmcat的系统属性 org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH: true

问题详情:

已在 Apache Tomcat 6.0.10 中修复

重要:目录遍历 CVE-2007-0450

Tomcat 允许 '\'、'%2F' 和 '%5C' 作为路径分隔符。当 Tomcat 在配置为仅代理某些上下文的代理(包括但不限于具有 mod_proxy 和 mod_jk 的 Apache HTTP 服务器)后面使用时,包含诸如“/../”之类的字符串的 HTTP 请求可能允许攻击者绕过上下文限制代理,并访问非代理上下文。

以下 Java 系统属性已添加到 Tomcat,以提供对 URL 中路径分隔符处理的额外控制(这两个选项默认为 false):

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH: true|false org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH: true|false 由于无法保证所有 URL 都由 Tomcat 处理,因为它们在代理中服务器,Tomcat 应该始终受到保护,就好像没有使用限制上下文访问的代理一样。

影响:6.0.0-6.0.9

于 2013-09-24T14:48:16.453 回答
0

/ 的正确标识符是%2f

于 2013-09-23T20:30:48.063 回答