当前位置: 首页 > article >正文

Spring Boot 项目零风险升级 Tomcat 指南:锁定版本也能修复漏洞

【安全圈】Apache Tomcat 中的 CVE-2025-24813 漏洞导致服务器遭受 RCE 和数据泄露:立即更新|cve|应用程序|apache|tomcat_网易订阅【安全圈】Apache Tomcat 中的 CVE-2025-24813 漏洞导致服务器遭受 RCE 和数据泄露:立即更新,服务器,cve,应用程序,apache,tomcathttps://www.163.com/dy/article/JQD3SBQH0511A5GF.html

由于tomcat旧版本存在漏洞,需要升级,大致版本情况如下图所示,有兴趣的可以看下网易的原文。

 由于历史原因,项目使用JDK8,springboot版本2.7.18,已经是2.7.x版本下的最新版本,无法通过升级springboot的方式来升级tomcat版本。

目前的tomcat版本为springboot2.7.18内置的9.0.83版本,为了避免出现安全漏洞,至少要升级到9.0.99。

查阅了很多资料以后,建议的做法是在根pom.xml文件下(这里注意要在根pom.xm文件下修改),添加如下代码,会自动覆盖tomcat的版本,然而试过之后并没有成功,重新启动服务后,tomcat版本仍然是9.0.83。

<properties>
    <tomcat.version>9.0.102</tomcat.version>
</properties>

于是尝试显示引入新版本tomcat的方式来更新,代码如下。

            <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-websocket</artifactId>
                <version>${tomcat.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-el</artifactId>
                <version>${tomcat.version}</version>
            </dependency>

这里有一个误区,就是引入新版本的tomcat,要先在旧版本的spring-boot-starter-web中移除旧的tomcat。笔者在这里浪费了很多时间,尝试了在不同的依赖层级排除掉旧版本的tomcat,重启后一直报错。

后来又查阅了一些资料,加上不断尝试,终于在不排除旧版本的情况下,直接引入新版本,成功升级tomcat版本。查看是否成功可以使用以下命令查看mvn结构树。

mvn dependency:tree | grep tomcat-embed

如果有遇到和我同样问题的朋友,可以尝试下这个解决思路。


http://www.kler.cn/a/582678.html

相关文章:

  • 【Leetcode 每日一题】2269. 找到一个数字的 K 美丽值
  • Python+jupyter进行数据分析与数据挖掘
  • Docker基础入门(一)
  • React 中如何实现表单的受控组件?
  • Linux_17进程控制
  • Flink 1.17.2 版本用 java 读取 starrocks
  • c#如何直接获取json中的某个值
  • Java中的加盐加密:提升密码存储安全性的关键实践
  • 深度解读 | AI驱动下的新型金融对冲策略:稀疏奖励强化学习的应用
  • 17153.班级活动(java)
  • Linux-基础开发工具
  • 机器学习之超参数优化(Hyperparameter Optimization)
  • 使用 ArkUI 开发鸿蒙登录界面
  • MyBatis-Plus 注解大全
  • Vue | Vue3中为什么要用 Proxy 代替 Object.defineProperty
  • el-table 通过 slot=“header“ 自定义表头,遇到数据不更新的问题。
  • 深入解析Java虚拟机(JVM):架构、内存管理与性能优化
  • 网关与默认网关
  • KMeans实战——聚类和轮廓系数评估啤酒数据集
  • DataWhale 大语言模型 - 语言模型发展历程