最后找出了原因(对于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