处理RESTful请求时处理转义的URL

时间:2013-09-23 20:06:50

标签: spring api rest tomcat jersey

使用 tomcat 2.春季运动衫整合

路径中的一个uri片段包含一个'/',我正确地通过用%2f替换它来逃避它。但是,我的请求处理器上的请求永远不会正确。

示例URI

/人/ bad_person_identifier%2fabcd

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

/的正确标识符为%2f