【发布时间】:2011-01-25 23:07:51
【问题描述】:
我使用 Jboss 4.2.3 作为应用服务器。有没有办法限制 JBoss 接受的 HTTP Post 请求的大小?我想限制大小以避免 DOS 攻击。
我已经在 server.xml 中设置了 maxHttpHeaderSize 和 maxPostSize,但它们似乎都没有任何区别。
【问题讨论】:
我使用 Jboss 4.2.3 作为应用服务器。有没有办法限制 JBoss 接受的 HTTP Post 请求的大小?我想限制大小以避免 DOS 攻击。
我已经在 server.xml 中设置了 maxHttpHeaderSize 和 maxPostSize,但它们似乎都没有任何区别。
【问题讨论】:
对于 Jboss,你应该像这样在配置文件(例如:standalone-full.xml)中进行配置: max-post-size="26214400" 表示 25MB
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" max-post-size="26214400" socket-binding="http" redirect-socket="https"/>
<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>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
【讨论】:
maxPostSize 定义了 POST 在 Tomcat 将“自动”解析之前可以达到多大,无论这意味着什么。
如果您出于安全原因这样做,则需要三思而后行。 DOS 攻击不会方便地将其大小宣布为 HTTP 请求标头,它只会发送数据,直到您的服务器崩溃。
您可以检查请求的 Content-Length 标头,如果它不存在或太大,则立即拒绝它,但是您冒着拒绝不提供标题,很多人不会。
否则,您将不得不读取请求数据,直到它超过阈值,然后然后拒绝它。
不管怎样,容器帮不了你太多。
【讨论】: