代码之家  ›  专栏  ›  技术社区  ›  Rasool Ghafari

如何在spring boot和嵌入式tomcat中设置mod_reqtimeout?

  •  0
  • Rasool Ghafari  · 技术社区  · 6 年前

    我有一个使用嵌入式tomcat的spring boot应用程序,我想设置 mod_reqtimeout 防止慢速http dos攻击。如何在spring boot配置中设置或初始化此模块?

    acunetix显示了以下警告:

    您的web服务器容易受到慢速HTTP DoS(拒绝服务)攻击。 Slowloris和Slow HTTP POST DoS攻击依赖于这样一个事实,即HTTP协议在设计上要求服务器在处理请求之前完全接收请求。如果HTTP请求未完成,或者传输速率非常低,服务器会让其资源忙着等待其余的数据。如果服务器使太多资源处于繁忙状态,则会造成拒绝服务。

    当我在谷歌上搜索这个警告时,我发现应该设置了 mod_请求超时 如下所示:

    https://httpd.apache.org/docs/trunk/mod/mod_reqtimeout.html

    2 回复  |  直到 6 年前
        1
  •  0
  •   Rasool Ghafari    6 年前

    我解决了注入以下bean的问题,并设置了连接器的连接超时:

    @Bean
    public EmbeddedServletContainerFactory servletContainerFactory() {
        TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
    
        factory.addConnectorCustomizers(connector ->
                ((AbstractProtocol) connector.getProtocolHandler()).setConnectionTimeout(8000));
    
        return factory;
    }
    
        2
  •  0
  •   mahyar    6 年前

    在spring boot 1.4或更高版本中,可以在应用程序属性中使用以下配置:

    server.connection-timeout
    

    连接器在关闭连接之前等待另一个HTTP请求的时间。未设置时,将使用连接器特定于容器的默认值。使用值-1表示无(即无限)超时。

    资料来源: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html