Наконец выяснил причину этого (как для 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) Если вы используете настройку сценария инициализации для запуска нескольких служб 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 "
в) Если вы используете установку сценария инициализации для запуска нескольких служб 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