限制JBoss上的HTTP post请求的大小

时间:2010-03-10 15:32:52

标签: java http tomcat jboss

我使用Jboss 4.2.3作为appserver。有没有办法限制JBoss接受的HTTP Post请求的大小?我想限制大小以避免DOS攻击。

我已经在server.xml中使用了maxHttpHeaderSize和maxPostSize,但它们似乎都没有任何区别。

3 个答案:

答案 0 :(得分:3)

maxPostSize定义了在Tomcat“自动”解析它之前可以获得多大的POST,无论这意味着什么。

如果出于安全原因这样做,您需要三思而后行。 DOS攻击不会方便地宣布其大小为HTTP请求标头,它只是发送数据直到您的服务器崩溃。

可以检查请求的Content-Length标头,如果它不存在或者太大,立即拒绝它,但你冒着拒绝真正的客户端的风险提供标题,许多人不会。

否则,您只需要读取请求数据,直到超过阈值,然后拒绝它。

无论哪种方式,容器都无法帮到你。

答案 1 :(得分:0)

Tomcat接受$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml中的HTTP请求,您可以将maxHttpHeaderSize配置为Connector标记的属性。

要控制内容,您需要实施ValveFilter

答案 2 :(得分:0)

对于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>