【问题标题】:Handling escaped url while processing RESTful requests [closed]在处理 RESTful 请求时处理转义的 url [关闭]
【发布时间】:2013-09-23 20:06:49
【问题描述】:

使用 1. 雄猫 2. 春季球衣整合

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

示例 URI

/persons/bad_person_identifier%2fabcd

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

【问题讨论】:

  • 这种方法在 jersey grizzly 服务器中有效,但在 tomcat 中无效
  • 逃到哪里去了?您的浏览器或 Java 服务器代码中的 URL?

标签: spring api rest tomcat jersey


【解决方案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:真|假 org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH:真|假 由于无法保证所有 URL 都由 Tomcat 处理,就像它们在代理服务器中一样,因此应该始终保护 Tomcat,就好像没有使用限制上下文访问的代理一样。

影响:6.0.0-6.0.9

【讨论】:

    【解决方案2】:

    /的正确标识符是%2f

    【讨论】:

    • 好吧,我错过了'f'。那是问题中的错字。现已更正问题。
    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多