spring boot tomcat版本升級的實(shí)現(xiàn)示例
1. 需求
我們使用的springboot
版本為2.3.8.RELEASE
,對應(yīng)的tomcat版本為9.0.41
,公司tomcat對應(yīng)版本發(fā)現(xiàn)攻擊者可發(fā)送不完整的POST請求觸發(fā)錯(cuò)誤響應(yīng),從而可能導(dǎo)致獲取其他用戶先前請求的數(shù)據(jù),造成信息泄露的bug,行方要求對tomcat版本進(jìn)行升級,受影響版本如下:
Apache Tomcat 9.0.0-M11 至 9.0.43
Apache Tomcat 8.5.7 至 8.5.63
由上所示,我們公司決定將tomcat升級一個(gè)小版本升級到9.0.44
版本,解決對應(yīng)問題。
2.具體操作
具體操作分為如下幾步
- 確定自己使用tomcat版本號,查看是否需要升級
- 移除tomcat錯(cuò)誤版本編號,引入新的版本tomcat相關(guān)pom坐標(biāo)
- 進(jìn)行服務(wù)啟動(dòng)測試,查看版本編號是否修改成功
2.1 確定當(dāng)前tomcat使用版本號
首先我們需要確定自己對應(yīng)的tomcat版本編號,可以使用右鍵點(diǎn)擊進(jìn)入spring-boot-starter-parent
然后再右鍵點(diǎn)擊進(jìn)入spring-boot-dependencies
然后我們在里面發(fā)現(xiàn)tomcat引入的jar包,再次進(jìn)行右鍵點(diǎn)擊spring-boot-starter-tomcat
最終發(fā)現(xiàn)tomcat
版本為9.0.41
,版本在漏洞版本中,所以需要升級
具體升級版本
我們具體可以升級到設(shè)么版本,需要確定一下,可以使用maven的公共倉庫mvnrepository
確定一下到底支持哪些版本,通過在倉庫中搜索spring-boot-starter-tomcat
,找到對應(yīng)的2.3.8.RELEASE版本,我們可以看到他的支持版本范圍,具體訪問地址
注意:確定當(dāng)前版本信息也可以使用maven
的dependences樹狀依賴,查看依賴關(guān)系,此處我已經(jīng)修改完了所以展示的頁面也是修改完之后正確的tomcat
版本
還可以使用maven沖突解決工具進(jìn)行樹結(jié)構(gòu)查看,這里不多贅述了
2.2 移除starter-web模塊對tomcat的依賴并引入新依賴
主要操作為pom文件中的starter-web,以及引入新的依賴,具體的pom文件如下所示,在maven對應(yīng)的根pom中引入新版tomcat版本號 <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 測試
其實(shí)前面的maven樹以及依賴樹已經(jīng)證實(shí) tomcat
版本已經(jīng)修改了,但是還是啟動(dòng)一下服務(wù)確定一下為好,那么再次啟動(dòng)服務(wù),發(fā)現(xiàn)版本編號已經(jīng)修改
到此這篇關(guān)于spring boot tomcat版本升級的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)spring boot tomcat版本升級內(nèi)容請搜索腳本之家以前的文章或繼續(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)比較容易,但是這種方法對于集合數(shù)據(jù)的校驗(yàn)不適用,下面我們就來看看如何對入?yún)?shù)據(jù)進(jìn)行批量數(shù)據(jù)校驗(yàn)吧2024-02-02基于Java編寫一個(gè)簡單的內(nèi)部網(wǎng)段掃描程序
這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫一個(gè)簡單的內(nèi)部網(wǎng)段掃描程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解下2025-02-02java web中圖片驗(yàn)證碼功能的簡單實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava web 驗(yàn)證碼的簡單實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06IDEA整合SSM框架實(shí)現(xiàn)網(wǎng)頁上顯示數(shù)據(jù)
最近做了個(gè)小項(xiàng)目,該項(xiàng)目包在intellij idea中實(shí)現(xiàn)了ssm框架的整合以及實(shí)現(xiàn)訪問,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-052020新版idea創(chuàng)建項(xiàng)目沒有javaEE 沒有Web選項(xiàng)的完美解決方法
這篇文章主要介紹了2020新版idea創(chuàng)建項(xiàng)目沒有javaEE 沒有Web選項(xiàng)的完美解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09JavaWeb實(shí)現(xiàn)同一帳號同一時(shí)間只能一個(gè)地點(diǎn)登陸(類似QQ登錄的功能)
最近做了企業(yè)項(xiàng)目,其中有這樣的需求要求同一帳號同一時(shí)間只能一個(gè)地點(diǎn)登陸類似QQ登錄的功能。下面小編通過本文給大家分享實(shí)現(xiàn)思路,感興趣的朋友參考下吧2016-11-11解析web.xml中在Servlet中獲取context-param和init-param內(nèi)的參數(shù)
本篇文章是對web.xml中在Servlet中獲取context-param和init-param內(nèi)的參數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07