簡體   English   中英

如何在Spring Boot和嵌入式Tomcat中設置mod_reqtimeout?

[英]How to set mod_reqtimeout in spring boot and embedded tomcat?

我有使用嵌入式tomcat的spring boot應用程序,我想設置mod_reqtimeout來防止緩慢的http dos攻擊。 如何在Spring Boot配置中設置或初始化此模塊?

acunetix顯示此警告:

您的Web服務器容易受到慢速HTTP DoS(拒絕服務)攻擊。 Slowloris和Slow HTTP POST DoS攻擊依賴於以下事實:根據設計,HTTP協議要求服務器在處理請求之前將其完全接收。 如果HTTP請求未完成,或者傳輸速率很低,則服務器將使其資源繁忙以等待其余數據。 如果服務器使過多的資源繁忙,則會導致拒絕服務。

當我搜索此警告時,我看到應該設置mod_reqtimeout ,如下所示:

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

我通過將其注入下面的bean並設置了連接器的連接超時來解決了這個問題:

@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();

    factory.addConnectorCustomizers(connector ->
            ((AbstractProtocol) connector.getProtocolHandler()).setConnectionTimeout(8000));

    return factory;
}

在Spring Boot 1.4或更高版本中,可以使用以下命令在應用程序屬性中進行配置:

server.connection-timeout

連接器在關閉連接之前等待另一個HTTP請求的時間。 如果未設置,則使用連接器的特定於容器的默認值。 使用值-1表示沒有(即無限)超時。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM