简单的spring boot tomcat版本升级

简单的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.具体操作

具体操作分为如下几步

  1. 确定自己使用tomcat版本号,查看是否需要升级
  2. 移除tomcat错误版本编号,引入新的版本tomcat相关pom坐标
  3. 进行服务启动测试,查看版本编号是否修改成功

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 复制代码
<?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版本已经修改了,但是还是启动一下服务确定一下为好,那么再次启动服务,发现版本编号已经修改

相关推荐
罗政3 小时前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端
拾光师4 小时前
spring获取当前request
java·后端·spring
寻爱的希斯克利夫4 小时前
tomcat 配置jenkins_home 目录
servlet·tomcat·jenkins
Java小白笔记6 小时前
关于使用Mybatis-Plus 自动填充功能失效问题
spring boot·后端·mybatis
小哇6666 小时前
Spring Boot,在应用程序启动后执行某些 SQL 语句
数据库·spring boot·sql
qq_290606276 小时前
tomcat,el表达式执行带参数命令,字符串数组,String[],el表达式注入
java·tomcat
JOJO___7 小时前
Spring IoC 配置类 总结
java·后端·spring·java-ee
白总Server8 小时前
MySQL在大数据场景应用
大数据·开发语言·数据库·后端·mysql·golang·php
luoluoal8 小时前
java项目之企业级工位管理系统源码(springboot)
java·开发语言·spring boot
蜜桃小阿雯8 小时前
JAVA开源项目 校园美食分享平台 计算机毕业设计
java·jvm·spring boot·spring cloud·intellij-idea·美食