漏洞扫描提示的是tomcat-embed-core[CVE-2020-1938],解决方式是升级tomcat的版本。
该漏洞影响的版本:
Apache Tomcat 9.x < 9.0.31
Apache Tomcat 8.x < 8.5.51
Apache Tomcat 7.x < 7.0.100
Apache Tomcat 6.x
其余的安全漏洞也可以通过升级版本的方式解决,或者找对应tomcat版本的修复补丁,这里只是介绍版本升级。
问题的关键点是如何升级Springboot内嵌的tomcat版本。
1、确认内嵌tomcat的版本
通过mvn dependency:tree命令
首先进入项目的目录,一定是项目的目录,cmd窗口或者IDEA的Terminal窗口运行:
mvn dependency:tree > tree.txt
命令运行结果:
打开txt文本:
PS:我这是升级版本号之后的运行结果,我之前的版本是9.0.16
2、升级版本
Springboot升级内嵌tomcat的方法是在pom.xml中添加<tomcat.version>9.0.37</tomcat.version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<tomcat.version>9.0.37</tomcat.version>
</properties>
这种方式只是针对Springboot项目。
也可以通过先排除后引入的方式升级:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.37</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>9.0.37</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>