spring boot 项目中遇到Slow HTTP Denial of Service Attack漏洞

 

 

 

 

 

问题描述:

中文叫作缓慢的HTTP攻击漏洞,利用的HTTPPOST:POST的时候,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,hold住这个连接不断开。这样当客户端连接多了后,占用住webserver的所有可用连接,从而导致DOS。

解决方案:

对web服务器的http头部传输的最大许可时间进行限制,修改成最大许可时间为20秒,如果还有该漏洞,则需要把最大许可时间修改小。在springBoot中通过写一个配置类来对Tomcat进行设置,设置他的连接超时时间,如果设置完以后还有此漏洞,那么就需要将连接时间减小。

packagecom.qzt.common.config;



importorg.apache.catalina.connector.Connector;

importorg.apache.coyote.http11.Http11NioProtocol;

importorg.springframework.boot.context.embedded.EmbeddedServletContainerFactory;

importorg.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;

importorg.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;

importorg.springframework.context.annotation.Bean;

importorg.springframework.context.annotation.Configuration;

@Configuration

publicclass WebServerConfiguration

{

@Bean

publicEmbeddedServletContainerFactorycreateEmbeddedServletContainerFactory()

{

TomcatEmbeddedServletContainerFactorytomcatFactory = new TomcatEmbeddedServletContainerFactory();

// tomcatFactory.setPort(8081);

tomcatFactory.addConnectorCustomizers(newMyTomcatConnectorCustomizer());

returntomcatFactory;

}

}

classMyTomcatConnectorCustomizer implements TomcatConnectorCustomizer

{

publicvoid customize(Connector connector)

{

Http11NioProtocolprotocol = (Http11NioProtocol) connector.getProtocolHandler();

//设置最大连接数

// protocol.setMaxConnections(2000);

//设置最大线程数

// protocol.setMaxThreads(2000);

protocol.setConnectionTimeout(8000); //就是这一句起作用了

}

}

 

 


 

 

 

此问题的修复还有其他两种配置的方式(链接下有不同类对Tomcat进行设置):https://www.cnblogs.com/softidea/p/5751596.html

 

你可能感兴趣的:(spring,boot)