このエラーが発生します:
Exception during request processing:
Caused by javax.servlet.ServletException with message:
"Parameter count exceeded allowed maximum: 512"
投稿で渡されるパラメータの数には制限があるようです。
JBossでこの制限を拡張するにはどうすればよいですか?
パラメータの数は、ハッシュマップ衝突サービス拒否攻撃をプラグインするためにすべてのWebサーバーで制限されていました。
次のシステムプロパティを構成ファイルに追加することで、制限を引き上げることができます(例standalone.xml
)。
<property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT" value="10000"/>
(ソース)
念のため:プレーンTomcatの場合、対応する解決策は次を追加することです:
org.apache.tomcat.util.http.Parameters.MAX_COUNT=10000
のcatalina.properties
はい、そうです!アーロン・ディグラ氏は正解でした!
ただし、次の点に注意してください。Jboss7では、行を挿入してください
<system-properties>
<property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT"value="10000"/>
</system-properties>
タグの直後で、<extensions>
JBoss 7がstandalone.xmlを解析するときにエラーが発生しない場合は、例を挙げてみましょう。
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:1.2">
<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.configadmin"/>
...
</extensions>
<system-properties>
<property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT" value="10000" />
</system-properties>
WildFlyを使用している場合の別の方法は、standalone.xml
ファイルを編集して追加することmax-parameters
です。
<http-listener name="default" socket-binding="http" max-parameters="2690"/>
スタンドアロン.xmlの例:
...
<subsystem xmlns="urn:jboss:domain:undertow:1.1">
<buffer-cache name="default"/>
<server name="default-server">
<!-- change here-->
<http-listener name="default" socket-binding="http" max-parameters="2690"/>
<!-- change here-->
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
...
次のスニペットをJBossサーバーのstandalone.xmlに貼り付ける必要があります。
<server name="default-server">
<http-listener name="default" socket-binding="http" max-parameters="5000"/>
<https-listener name="https" socket-binding="https" max-parameters="5000"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<http-invoker security-realm="ApplicationRealm"/>
</host>
max-parameter値を持つHTTPリスナータグに焦点を当てることが違いを生みます。このフィールドのデフォルト値は次のとおりです。-
org.apache.tomcat.util.http.Parameters.MAX_COUNT=1000
これは、ここで説明するように、ハッシュマップ衝突のサービス拒否攻撃に対する救済策として行われました。