spring boot tomcat版本升級(jí)的實(shí)現(xiàn)示例
1. 需求
我們使用的springboot版本為2.3.8.RELEASE,對(duì)應(yīng)的tomcat版本為9.0.41,公司tomcat對(duì)應(yīng)版本發(fā)現(xiàn)攻擊者可發(fā)送不完整的POST請(qǐng)求觸發(fā)錯(cuò)誤響應(yīng),從而可能導(dǎo)致獲取其他用戶先前請(qǐng)求的數(shù)據(jù),造成信息泄露的bug,行方要求對(duì)tomcat版本進(jìn)行升級(jí),受影響版本如下:
Apache Tomcat 9.0.0-M11 至 9.0.43
Apache Tomcat 8.5.7 至 8.5.63
由上所示,我們公司決定將tomcat升級(jí)一個(gè)小版本升級(jí)到9.0.44版本,解決對(duì)應(yīng)問題。
2.具體操作
具體操作分為如下幾步
- 確定自己使用tomcat版本號(hào),查看是否需要升級(jí)
- 移除tomcat錯(cuò)誤版本編號(hào),引入新的版本tomcat相關(guān)pom坐標(biāo)
- 進(jìn)行服務(wù)啟動(dòng)測(cè)試,查看版本編號(hào)是否修改成功
2.1 確定當(dāng)前tomcat使用版本號(hào)
首先我們需要確定自己對(duì)應(yīng)的tomcat版本編號(hào),可以使用右鍵點(diǎn)擊進(jìn)入spring-boot-starter-parent

然后再右鍵點(diǎn)擊進(jìn)入spring-boot-dependencies

然后我們?cè)诶锩姘l(fā)現(xiàn)tomcat引入的jar包,再次進(jìn)行右鍵點(diǎn)擊spring-boot-starter-tomcat

最終發(fā)現(xiàn)tomcat版本為9.0.41,版本在漏洞版本中,所以需要升級(jí)

具體升級(jí)版本
我們具體可以升級(jí)到設(shè)么版本,需要確定一下,可以使用maven的公共倉(cāng)庫(kù)mvnrepository確定一下到底支持哪些版本,通過在倉(cāng)庫(kù)中搜索spring-boot-starter-tomcat,找到對(duì)應(yīng)的2.3.8.RELEASE版本,我們可以看到他的支持版本范圍,具體訪問地址

注意:確定當(dāng)前版本信息也可以使用maven的dependences樹狀依賴,查看依賴關(guān)系,此處我已經(jīng)修改完了所以展示的頁(yè)面也是修改完之后正確的tomcat版本

還可以使用maven沖突解決工具進(jìn)行樹結(jié)構(gòu)查看,這里不多贅述了

2.2 移除starter-web模塊對(duì)tomcat的依賴并引入新依賴
主要操作為pom文件中的starter-web,以及引入新的依賴,具體的pom文件如下所示,在maven對(duì)應(yīng)的根pom中引入新版tomcat版本號(hào) <tomcat.version>9.0.44</tomcat.version>

我們項(xiàng)目有一個(gè)common模塊,他統(tǒng)一引入starter-web模塊,我們修改此處即可,其他引用模塊則自動(dòng)更新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>公共模塊,業(yè)務(wù)依賴基礎(chǔ)模塊,提供基礎(chǔ)的技術(shù)和業(yè)務(wù)支撐</description>
<dependencies>
<!-- feign 調(diào)用通用interceptor,保證調(diào)用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 修復(fù)漏洞 -->
<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 測(cè)試
其實(shí)前面的maven樹以及依賴樹已經(jīng)證實(shí) tomcat版本已經(jīng)修改了,但是還是啟動(dòng)一下服務(wù)確定一下為好,那么再次啟動(dòng)服務(wù),發(fā)現(xiàn)版本編號(hào)已經(jīng)修改

到此這篇關(guān)于spring boot tomcat版本升級(jí)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)spring boot tomcat版本升級(jí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)入?yún)?shù)據(jù)批量數(shù)據(jù)校驗(yàn)詳解
在業(yè)務(wù)處理中一般入?yún)⑹菃螚l數(shù)據(jù),這樣數(shù)據(jù)校驗(yàn)比較容易,但是這種方法對(duì)于集合數(shù)據(jù)的校驗(yàn)不適用,下面我們就來看看如何對(duì)入?yún)?shù)據(jù)進(jìn)行批量數(shù)據(jù)校驗(yàn)吧2024-02-02
基于Java編寫一個(gè)簡(jiǎn)單的內(nèi)部網(wǎng)段掃描程序
這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫一個(gè)簡(jiǎn)單的內(nèi)部網(wǎng)段掃描程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解下2025-02-02
java web中圖片驗(yàn)證碼功能的簡(jiǎn)單實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava web 驗(yàn)證碼的簡(jiǎn)單實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
IDEA整合SSM框架實(shí)現(xiàn)網(wǎng)頁(yè)上顯示數(shù)據(jù)
最近做了個(gè)小項(xiàng)目,該項(xiàng)目包在intellij idea中實(shí)現(xiàn)了ssm框架的整合以及實(shí)現(xiàn)訪問,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
2020新版idea創(chuàng)建項(xiàng)目沒有javaEE 沒有Web選項(xiàng)的完美解決方法
這篇文章主要介紹了2020新版idea創(chuàng)建項(xiàng)目沒有javaEE 沒有Web選項(xiàng)的完美解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
JavaWeb實(shí)現(xiàn)同一帳號(hào)同一時(shí)間只能一個(gè)地點(diǎn)登陸(類似QQ登錄的功能)
最近做了企業(yè)項(xiàng)目,其中有這樣的需求要求同一帳號(hào)同一時(shí)間只能一個(gè)地點(diǎn)登陸類似QQ登錄的功能。下面小編通過本文給大家分享實(shí)現(xiàn)思路,感興趣的朋友參考下吧2016-11-11
Java高級(jí)語(yǔ)法學(xué)習(xí)之反射詳解
java的泛型和反射機(jī)制一直很難理解和應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于Java高級(jí)語(yǔ)法學(xué)習(xí)之反射的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01
解析web.xml中在Servlet中獲取context-param和init-param內(nèi)的參數(shù)
本篇文章是對(duì)web.xml中在Servlet中獲取context-param和init-param內(nèi)的參數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07

