[英]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
,如下所示:
我通過將其注入下面的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.