根据您的 JBoss 版本和RedHat 官方网站:
CVE-2016-6816 的修复在处理 HTTP 请求中的无效字符时更严格地执行规则。
因此,任何发出包含以下任何 ASCII 字符的请求的客户端都将收到 400:
- 控制字符(值 0x01 到 0x1f 和 0x7f)
- 8 位 ASCII 值(值 > 0x7f)
- 以下任何字符:''(空格字符)'"'(双引号)'#'(哈希或井号)'<'(小于)'>'(大于)'\'(反斜杠)'^ ' (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"
我希望这可以帮助你。