一、为什么要升级内嵌的Tomcat版本
在产品运行迭代过程中,产品所使用的插件、中间件等经常会被爆出各种各样的漏洞,有些威胁比较大的漏洞是需要及时修复的,最近我们就收到通知需要及时升级tomcat的版本以应对tomcat的新漏洞,当前我们的spring boot版本是2.2.10.RELEASE,其内嵌的tomcat版本是9.0.38,参考下图中本次漏洞(请求走私漏洞 (CVE-2021-33037))的详细信息得知我们需要及时的升级我们的tomcat版本到9.0.46版本以上。漏洞详情参考:https://www.secrss.com/articles/32655
二、如何升级?
升级spring boot内嵌tomcat还是很容易的,但是项目的目录结构不一样升级的方式可能有一点点差别。
在升级之前建议打开IDE查看一下当前的内嵌tomcat版本是多少,查看方式如下图(随便找了个demo)
若发现版本在漏洞的范围内,则进行升级。
通常,对于内嵌版本的升级我们只需要项目父类的pom.xml文件中,写入我们需要升级的依赖版本号就可以了,如下图:
<properties>
<tomcat.version>9.0.52</tomcat.version>
</properties>
刷新重新导入配置我们可以看到此时已经升级成功了,版本号变成了最新的9.0.52版本
但是,对于一些项目目录结构可能这样升级并不生效,这时我们需要在父类pom.xml手动导入上图框中的三个依赖即可,导入依赖如下:
<properties>
<tomcat.version>9.0.52</tomcat.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat.version}</version>
</dependency>
</dependencies>
再次,刷新依赖导入,查看是否已经升级成功:
启动项目,日志输出中可以看到如下,说明已经升级成功: