代码之家  ›  专栏  ›  技术社区  ›  Naresh S

如果%2f是jboss中get url的一部分,则接收HTTP 400错误

  •  25
  • Naresh S  · 技术社区  · 15 年前

    每当URL %2F 哪个是十六进制代码 / 发布到我的jboss服务器,我得到一个错误:

    HTTP 400 Bad Request error message. 
    

    以下是网址:

    http://localhost:8080/application/**abc%2Fhi**?msg=hello"
    

    如果我删除 %2F 从URL链接工作正常。

    这个 %2F 必须是URL的一部分,不能是请求参数。

    1 回复  |  直到 9 年前
        1
  •  59
  •   Mark E. Haase    9 年前

    最后找出了原因(对于JBoss和Apache)。两个应用程序都有意拒绝带有编码斜线的URI( %2F 对于 / %5C 对于 \ )以防止可能的安全漏洞。

    链接:

    https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0450

    http://securitytracker.com/id/1018110 (参见第4节。解决方案)

    下面是它们为在jboss中启用此行为提供的说明:

    注意:作为对CVE-2007-0450的响应,jboss as认为URL中的编码斜杠和反斜杠无效,其使用将导致HTTP 400错误。可以按照下面概述的步骤允许编码的斜杠和反斜杠,但是这样做会使您暴露在与CVE-2007-0450相关的攻击中:

    a)如果使用/var/lib/jbossas/bin/run.sh设置,请编辑/etc/jbossas/run.conf并附加

    --dorg.apache.tomcat.util.buf.udecoder.allow_encoded_slash=true

    --dorg.apache.catalina.connector.coyoteadapter.allow_backslash=true分配给java选项的字符串

    b)如果使用init脚本设置运行多个jboss as服务,并且希望在所有服务上默认允许编码,请编辑/etc/jbossas/jbossas.conf并添加行java_opts=“$java_opts

    --dorg.apache.tomcat.util.buf.udecoder.allow_encoded_slash=true

    ---dorg.apache.catalina.connector.coyoteadapter.allow_backslash=true”

    c)如果您使用init脚本设置运行多个jboss作为服务,并希望对特定服务允许斜杠和反斜杠编码,请编辑/etc/sysconfig/$name(其中name是您的服务名),并添加行java_opts=“$java_opts --dorg.apache.tomcat.util.buf.udecoder.allow_encoded_slash=true ---dorg.apache.catalina.connector.coyoteadapter.allow_backslash=true”

    对于Apache,它就像在Apache conf或vhost conf中的某个地方设置“allowencodedslash nodecode”一样简单(但是在.htaccess中不起作用)。

    Apache链接: http://httpd.apache.org/docs/current/mod/core.html#allowencodedslashes

    推荐文章