如何在 spring 启动和嵌入 tomcat 中设置 mod_reqtimeout?
How to set mod_reqtimeout in spring boot and embedded tomcat?
我有 spring 使用嵌入式 tomcat 的启动应用程序,我想设置 mod_reqtimeout
以防止缓慢的 http dos 攻击。我如何在 spring 引导配置中设置或初始化此模块?
acunetix 显示此警告:
您的网络服务器容易受到慢速 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
Time that connectors wait for another HTTP request before closing the connection. When not set, the connector's container-specific default is used. Use a value of -1 to indicate no (that is, an infinite) timeout.
来源:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
我有 spring 使用嵌入式 tomcat 的启动应用程序,我想设置 mod_reqtimeout
以防止缓慢的 http dos 攻击。我如何在 spring 引导配置中设置或初始化此模块?
acunetix 显示此警告:
您的网络服务器容易受到慢速 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
Time that connectors wait for another HTTP request before closing the connection. When not set, the connector's container-specific default is used. Use a value of -1 to indicate no (that is, an infinite) timeout.
来源:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html