我开源的一个项目中,有朋友提到存在 Spring Framework 身份认证绕过漏洞(CVE-2023-20860)
解决方案是升级spring 框架版本:

  • Spring Framework 5.3.X 系列用户建议升级Spring Framework到5.3.26及以上安全版本修复该漏洞
  • Spring Framework 6.0.X 系列用户建议升级Spring Framework到6.0.7及以上安全版本修复该漏洞

主要受影响的版本如下:

  • 6.0.0 to 6.0.6
  • 5.3.0 to 5.3.25
    我看了下,项目中依赖的spring boot版本如下:
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.10</version>

尝试2.4.x的其它几个版本,发现其依赖的spring框架都是5.3.x,也不敢冒然升级spring boot大版本,所以考虑只升级依赖的spring 框架.

在网上搜了下,没找到想要的解决方案,最后只能自己想办法。
我认为spring boot依赖肯定定义了sping 的版本属性,遵循maven就近原则,我只要在项目中覆盖这个变量就可以达到预期。
然后一级一级往上找,最后在spring-boot-dependencies的定义里找到了:
在这里插入图片描述
然后直接在我自己的项目的pom.xml里重新定义这个属性,问题解决:
在这里插入图片描述
项目的实际依赖的jar包版本已经是5.3.26:
在这里插入图片描述

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version>...
SpringBootSpringCloud的版本需要对应。因为官方不会保证SpringBootSpringCloud不同版本的兼容性。 Spring Cloud Spring Boot Angel 兼容Spring Boot 1.2.x Brixton 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x Camden 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x Dalston版本、Edgware版本 兼容Spring Boot 1 https://blog.csdn.net/jx520/article/details/92608842 https://www.cnblogs.com/oumi/p/9241424.html Spring,jdk,maven Spring boot 版本
Spring Boot和SSM框架Spring+SpringMVC+MyBatis)都是非常流行的Java Web开发框架,它们有以下几个方面的不同点: 1. 简化配置:Spring Boot可以通过自动配置来减少配置的工作量,而SSM框架需要手动配置,配置繁琐。 2. 微服务支持:Spring Boot天然支持微服务架构,搭配Spring Cloud可以很方便地实现微服务化开发,而SSM框架不支持微服务。 3. 开发效率:Spring Boot可以快速开发,只需要写少量的代码就可以完成一个功能,而SSM框架需要编写大量的XML配置文件和代码。 4. 技术栈:Spring Boot使用了最新的Spring技术栈,如Spring 5.x、Spring Security 5.x等,而SSM框架的技术栈相对较老。 5. 生态环境:Spring Boot的生态环境更加丰富,有大量的第三方库和插件可以使用,而SSM框架相对较少。 综上所述,Spring Boot相比于SSM框架,具有简化配置、微服务支持、开发效率高、技术栈更新和生态环境更丰富等优点。