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"/>
答案 0 :(得分:0)
根据您的JBoss版本和RedHat Official Site:
在处理HTTP请求中的无效字符时,CVE-2016-6816的修复程序将更严格地执行规则。
任何请求包含以下ASCII字符的客户端将收到400:
- 控制字符(值0x01至0x1f和0x7f)
- 8位ASCII值(值> 0x7f)
- 以下任何字符: ''(空格字符) “”(双引号) '#'(哈希或磅) '<'(小于) '>'(大于) '\'(反斜杠) '^'(抑扬音) '`'(反引号) '{'(弯曲的左括号或大括号) '|' (竖线) '}'(弯曲的方括号或大括号)
对于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"
希望这对您有所帮助。