wildfly的“允许url中的未转义字符”被忽略

yvfmudvl  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(326)

我有一个wildfly21.0.0.final运行一个spring boot rest应用程序,我遇到了一个奇怪的行为 GET 请求包含 | 查询参数中的(管道)字符。 | 根据http的rfc1738规范,(管道)字符是不安全的,而rfc3986允许对unicode字符进行编码。
但是,wildfly(undertow)有一个选项 http-listener 以及 https-listener 进入 allow-unescaped-characters-in-url .
这就是我的下拖子系统在wildlfy中的样子 standalone.xml :

<subsystem xmlns="urn:jboss:domain:undertow:11.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other">
    <buffer-cache name="default"/>
    <server name="default-server">
        <http-listener name="default" socket-binding="http" allow-unescaped-characters-in-url="true" redirect-socket="https" enable-http2="true"/>
        <https-listener name="https" socket-binding="https" max-post-size="1048576000" allow-unescaped-characters-in-url="true" ssl-context="LocalhostSslContext" enable-http2="true"/>
        <host name="default-host" alias="localhost">
            <http-invoker http-authentication-factory="application-http-authentication"/>
        </host>
    </server>
    <servlet-container name="default">
        <jsp-config/>
        <websockets/>
    </servlet-container>
    <application-security-domains>
        <application-security-domain name="other" http-authentication-factory="keycloak-http-authentication"/>
    </application-security-domains>
</subsystem>

完全 standalone.xml 这里有隐藏的敏感信息。
应用程序正在上运行 127.0.0.1:443 ,并作为https://myappname.company.com via 脉冲安全负载平衡器,其中 myappname 是否在上注册了cname company.com dns,指向负载均衡器vip。
这个 allow-unescaped-characters-in-url="true" bit在这些情况下工作正常(因此当请求包含 | 不能穿过Windows hosts 文件,但通过负载平衡器)。
但是,当我在windows中添加一个条目时 hosts 文件以绕过负载平衡器,例如:

127.0.0.1   myappname.company.com

…然后 GET 请求包含 | 在它的查询参数中将不起作用-事实上,它看起来甚至没有击中服务器,就像wildfly/undertow的一样 allow-unescaped-characters-in-url="true" 布景根本就不在那里。
现在我们的本地测试出现了问题。我们能做些什么改变吗 allow-unescaped-characters-in-url="true" 会一直受到尊重吗?我们知道这一点 | 应编码为 %7D ,但我们会对一个解决方案感兴趣(最好是在wildfly级别上),该解决方案将 allow-unescaped-characters-in-url="true" 无论请求是否通过,每次都要工作 hosts 文件或负载平衡器。
非常奇怪的是,它在wildfly 15.0.1.final中运行良好,即使没有 allow-unescaped-characters-in-url="true" 处于 standalone.xml .

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题