0

JBoss EAP 6.4.21 在请求的查询字符串和路径参数中发送非转义字符(像 | 的原始字符)时返回“400 Bad Request”响应。

以下设置已<system-properties>在域中尝试过。

<property name="-Dorg.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property name="-Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
4

1 回答 1

0

根据您的 JBoss 版本和RedHat 官方网站

CVE-2016-6816 的修复在处理 HTTP 请求中的无效字符时更严格地执行规则。

因此,任何发出包含以下任何 ASCII 字符的请求的客户端都将收到 400:

  1. 控制字符(值 0x01 到 0x1f 和 0x7f)
  2. 8 位 ASCII 值(值 > 0x7f)
  3. 以下任何字符:''(空格字符)'"'(双引号)'#'(哈希或井号)'<'(小于)'>'(大于)'\'(反斜杠)'^ ' (circumflex) '`' (反引号) '{' (左波浪括号或大括号) '|' (竖线)'}'(右波浪括号或大括号)

总之:

对于您的 jboss 版本,您必须在启动脚本中添加这一行standalone.sh

JAVA_OPTS="$JAVA_OPTS -Dtomcat.util.http.parser.HttpParser.requestTargetAllow='{|}'"

请记住,如果您升级到 eap 7.1.1+,此解决方案将不起作用。而是将此行添加到standalone.conf文件中:

JAVA_OPTS="$JAVA_OPTS -Dorg.wildfly.undertow.ALLOW_UNESCAPED_CHARACTERS_IN_URL=true"

我希望这可以帮助你。

于 2019-02-12T16:13:46.633 回答