最近有个小工程扫描出一个安全漏洞, SlowHttp慢速攻击的,需要修改 Tomcat 的配置,也正好关于 Tomcat 的参数调优,正好记录一下。

漏洞信息


查了一下这个漏洞,漏洞有两个解决方法,
1 是通过 Nginx
2 是 Tomcat 设置超时时间

关于这个漏洞,可以看下以下这篇博客:
https://www.cnblogs.com/xiaoliu66007/p/10174672.html

看了下项目好像没有 Nginx,所以还是设置超时时间吧。

配置 Spring Boot 内置 Tomcat 参数的时候,需要区分 Spring Boot 的 版本,刚开始的时候我用的是 2.0 以下的方法,发现提示 EmbeddedServletContainerCustomizer 不存在,后来查询才发现,2.0 往上的版本写法不一样了。

1.x 版本通过实现 org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer 的customize方法来实现自定义配置。

2.x 版本使用 WebServerFactoryCustomizer 接口替换 EmbeddedServletContainerCustomizer 组件完成对嵌入式Servlet容器的配置。

解决的话看下自己对于的版本来进行配置。

解决

Spring Boot 1.x 版本

import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @Author: lixj* @Date: 2020/6/8 12:02*/
@Configuration
public class WebServerConfiguration  {@Beanpublic EmbeddedServletContainerFactory createEmbeddedServletContainerFactory() {TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();tomcatFactory.setPort(8082);tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());return tomcatFactory;}class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer {public void customize(Connector connector) {Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();// 设置最大连接数protocol.setMaxConnections(2000);// 设置最大线程数protocol.setMaxThreads(2000);// 设置超时时间protocol.setConnectionTimeout(20000);}
}}

Spring Boot 2.x 版本

import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;import java.nio.charset.Charset;/*** @Author: lixj* @Date: 2020/6/8 14:09*/
@SpringBootConfiguration
public class WebServerConfiguration {@Beanpublic ConfigurableServletWebServerFactory webServerFactory() {TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();factory.setPort(8888);factory.setUriEncoding(Charset.forName("utf-8"));//编码factory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());return factory;}class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer {@Overridepublic void customize(Connector connector) {Http11NioProtocol handler = (Http11NioProtocol)connector.getProtocolHandler();handler.setAcceptCount(1000);// 排队数handler.setMaxConnections(1000);// 最大连接数handler.setMaxThreads(500);// 线程池的最大线程数handler.setMinSpareThreads(50);// 最小线程数handler.setConnectionTimeout(20000);// 超时时间 20S}}}

后续:修改20秒后漏洞还在,把超时时间改为8秒了,重新扫描后漏洞没有了。

Spring Boot内置Tomcat设置超时时间相关推荐

  1. Spring Boot 内置Tomcat——集成PHP解决方案

    Demo:https://gitee.com/shentuzhigang/mini-project/tree/master/springboot-embed-tomcat-php-demo 问题分析 ...

  2. Spring Boot 内置Tomcat——getServletContext().getRealPath()为临时目录问题解决方案

    问题描述 getServletContext().getRealPath()为临时目录 问题分析 默认情况下Spring Boot中request.getServletContext().getRea ...

  3. Spring Boot——内置Tomcat配置阿里云免费SSL证书(PFX格式证书)[启用HTTPS协议]

    基本概念 SSL证书:SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA ...

  4. Spring Boot 内置Tomcat——IntelliJ IDEA中配置模块目录设为文档根目录(DocumentRoot)解决方案

    源码分析 org.springframework.boot.web.servlet.server.DocumentRoot /*** Returns the absolute document roo ...

  5. 项目部署—移除Spring Boot内置Tomcat,部署到云服务器Tomcat

        以往部署Java web项目到阿里云服务器时,直接将项目打包成war包,放到阿里云服务器中tomcat的webapps目录下,就可以访问了.   SpringBoot默认给我们提供了内置tom ...

  6. Spring Boot 内置Tomcat——集成JSP解决方案

    解决方案 一.创建webapp目录 在src/main下创建webapp目录,用于存放jsp文件.这就是一个普通的目录,无需执行Mark Directory As 二.创建JSP 1.指定web资源目 ...

  7. Spring Boot内置Tomcat的静态资源配置(在页面中显示项目外的某个图片)

    哇~我现在只想长长的舒一口气,终于解决了 ~    记录一下 好,下面开始我的第一个博客,写的不好还请大家见谅~ Spring Boot项目是在官网自动生成的,目录如下: 在红线圈住的"ap ...

  8. 修改Spring boot内置的tomcat端口

    介绍两种种简单的修改spring boot内置端口的方法: 第一种:在入口直接设置端口,代码如下所示: public static void main(String[] args){SpringApp ...

  9. spring boot内嵌tomcat优雅的开启apr模式

    文章目录 简介 Win下开启APR Linux下开启APR 把lib打进jar包 简介 环境: jdk8.spring boot 2.3.4.RELEASE.centOS7.3.win7 在sprin ...

最新文章

  1. AcWing 734. 能量石 (01背包)+(贪心 - 领项交换)
  2. VTK:图表之ColorVertexLabels
  3. mac 安装 python 配置||虚拟环境
  4. python给出数据点进行插值_Python对数据进行插值和下采样的方法
  5. 大数据之HBase部署
  6. 品质生活在于细节 8月6日张朝阳“做饭直播”带货厨房好物
  7. ChaiNext:大盘横盘,主流币未有突出表现
  8. 从零配置webpack(react+less+typescript+mobx)
  9. matlab钢材切割,一种基于MATLAB的钢材裂纹扩展速率试验数据处理方法
  10. VS2015打开cshtml视图页文件报错 未将对象引用设置为实例 解决办法
  11. windows下MATLAB2016a安装配置
  12. cad放大_最新CAD软件插件大全+上千款字体,内附使用教程,只分享3天
  13. asc超级计算机题目,ASC世界大学生超级计算机竞赛赛题:单张图像超分辨率
  14. 操作系统:作业调度算法--先来先服务
  15. Android之底部菜单栏的实现
  16. 阿里公司将推出债卷,数字巨大
  17. 入职一年感言简短_如何在Windows任务栏中放入简短说明
  18. envoy实现_使用Envoy实现一键部署项目
  19. 答题小程序为何那么火?
  20. 1091: 童年生活二三事(多实例测试)Python

热门文章

  1. ajax获取上传文件的类型,ajax上传文件类型
  2. mysql的报错日志哪里看_mysql错误日志
  3. Linux定时备份数据
  4. 智行火车票免费加速到VIP最高速抢票(不用朋友积攒或者购买加速包)
  5. 考试系统怎么用?如何安装到电脑?
  6. [Matlab]双线性变换法设计数字带通滤波器
  7. Soul App聚焦Z世代社交需求 凭借2021亮眼表现荣获多个奖项
  8. 给Delphi7升级安装TeeChart pro v7)】
  9. 在虚拟机中安装Windows server 2003 详细图文安装过程
  10. R语言aggregate函数