spring boot tomcat版本升级的实现示例
作者:小大力
1. 需求
我们使用的springboot
版本为2.3.8.RELEASE
,对应的tomcat版本为9.0.41
,公司tomcat对应版本发现攻击者可发送不完整的POST请求触发错误响应,从而可能导致获取其他用户先前请求的数据,造成信息泄露的bug,行方要求对tomcat版本进行升级,受影响版本如下:
Apache Tomcat 9.0.0-M11 至 9.0.43
Apache Tomcat 8.5.7 至 8.5.63
由上所示,我们公司决定将tomcat升级一个小版本升级到9.0.44
版本,解决对应问题。
2.具体操作
具体操作分为如下几步
- 确定自己使用tomcat版本号,查看是否需要升级
- 移除tomcat错误版本编号,引入新的版本tomcat相关pom坐标
- 进行服务启动测试,查看版本编号是否修改成功
2.1 确定当前tomcat使用版本号
首先我们需要确定自己对应的tomcat版本编号,可以使用右键点击进入spring-boot-starter-parent
然后再右键点击进入spring-boot-dependencies
然后我们在里面发现tomcat引入的jar包,再次进行右键点击spring-boot-starter-tomcat
最终发现tomcat
版本为9.0.41
,版本在漏洞版本中,所以需要升级
具体升级版本
我们具体可以升级到设么版本,需要确定一下,可以使用maven的公共仓库mvnrepository
确定一下到底支持哪些版本,通过在仓库中搜索spring-boot-starter-tomcat
,找到对应的2.3.8.RELEASE版本,我们可以看到他的支持版本范围,具体访问地址
注意:确定当前版本信息也可以使用maven
的dependences树状依赖,查看依赖关系,此处我已经修改完了所以展示的页面也是修改完之后正确的tomcat
版本
还可以使用maven冲突解决工具进行树结构查看,这里不多赘述了
2.2 移除starter-web模块对tomcat的依赖并引入新依赖
主要操作为pom文件中的starter-web,以及引入新的依赖,具体的pom文件如下所示,在maven对应的根pom中引入新版tomcat版本号 <tomcat.version>9.0.44</tomcat.version>
我们项目有一个common模块,他统一引入starter-web模块,我们修改此处即可,其他引用模块则自动更新tomcat
版本,具体pom
信息如下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>credit-business</artifactId> <groupId>cn.git</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>business-common</artifactId> <description>公共模块,业务依赖基础模块,提供基础的技术和业务支撑</description> <dependencies> <!-- feign 调用通用interceptor,保证调用header token 值不丢失 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> <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> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-annotations-api</artifactId> </exclusion> </exclusions> </dependency> <!-- tomcat 修复漏洞 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>${tomcat.version}</version> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-annotations-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-annotations-api</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> <exclusions> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>cn.git</groupId> <artifactId>credit-swagger-starter</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>cn.git</groupId> <artifactId>credit-oracle-starter</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>cn.git</groupId> <artifactId>credit-redis-starter</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!-- ftp上传下载--> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.7</version> </dependency> <dependency> <groupId>cn.git</groupId> <artifactId>credit-discovery-starter</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> </dependencies> </project>
2.3 测试
其实前面的maven树以及依赖树已经证实 tomcat
版本已经修改了,但是还是启动一下服务确定一下为好,那么再次启动服务,发现版本编号已经修改
到此这篇关于spring boot tomcat版本升级的实现示例的文章就介绍到这了,更多相关spring boot tomcat版本升级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!