Ответ 1
Наконец выяснил причину этого (как для 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_OPTS
b) Если вы используете установку init script для запуска нескольких служб 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 script для запуска нескольких служб JBoss AS и хотите разрешить кодирование косой черты и обратную косую черту для определенной службы, отредактируйте /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 это так же просто, как установка "AllowEncodedSlashes NoDecode" где-то в вашем apache conf или vhost conf (но не работает в .htaccess).
Ссылка Apache: http://httpd.apache.org/docs/current/mod/core.html#allowencodedslashes