如何在 JBoss 7.0.9 中禁用默认的 1000 个最大参数限制?

如何在 JBoss 7.0.9 中禁用默认的 1000 个最大参数限制?

我们将 Web 应用程序从 JBoss 5.1 迁移到 7.0.9。迁移后,在特定情况下,会抛出运行时异常,如下所述,而 JBoss 5.1 中没有遇到过这种情况。我们发现,最大 http 参数有限制,默认值为 1000,以防止基于哈希冲突的 DOS 攻击。

1. 是否可以在 JBoss 7.0.9 中禁用此限制?

2。如果不能,如何得出/确定给定应用程序的最大值?

java.lang.RuntimeException: io.undertow.util.ParameterLimitException: UT000047:参数数量超过最大值1000 在 io.undertow.server.handlers.form.FormData.add(FormData.java:78) [undertow-core-1.3.31.Final-redhat-3.jar:1.3.31.Final-redhat-3] 在 io.undertow.server.handlers.form.FormData.add(FormData.java:68) [undertow-core-1.3.31.Final-redhat-3.jar:1.3.31.Final-redhat-3] 在 io.undertow.server.handlers.form.FormEncodedDataDefinition$FormEncodedDataParser.doParse(FormEncodedDataDefinition.java:172) [undertow-core-1.3.31.Final-redhat-3.jar:1.3.31.Final-redhat-3] 在io.undertow.server.handlers.form.FormEncodedDataDefinition$FormEncodedDataParser.parseBlocking(FormEncodedDataDefinition.java:251) [undertow-core-1.3.31.Final-redhat-3.jar:1.3.31.Final-redhat-3] 原因:io.undertow.util.ParameterLimitException:UT000047:参数数量超出最大值 1000 ... 还有 38 个

答案1

默认值为 1000,您可以通过添加“max-parameters”来修改该值,如下所示:

 <subsystem xmlns="urn:jboss:domain:undertow:1.1">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http" max-parameters="5000"/>
                <host name="default-host" alias="localhost">
............ <snip> ..........

答案2

确保您的 standalone.xml 的“max-parameters”设置为 5000,例如 -

<subsystem xmlns="urn:jboss:domain:undertow:10.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}">
        <buffer-cache name="default"/>
        <server name="default-server">
            <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" max-parameters="5000"/>
            <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
            <host name="default-host" alias="localhost">
                <location name="/" handler="welcome-content"/>
                <http-invoker security-realm="ApplicationRealm"/>
            </host>
        </server>
        <servlet-container name="default">
            <jsp-config/>
            <websockets/>
        </servlet-container>
        <handlers>
            <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
        </handlers>
    </subsystem>

相关内容