繁体   English   中英

在 spring-boot-starter-parent 2.7.3 升级到 SnakeYaml 1.31

[英]upgrade to SnakeYaml 1.31 in spring-boot-starter-parent 2.7.3

有 springboot 项目,其中想要排除 snakeyaml 1.30 或升级它 1.31 以避免强化问题报告

snakeyaml 1.30 版本存在安全漏洞

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
</parent>

下面是项目的有效pom.xml

  <dependency>
          <groupId>org.yaml</groupId>
          <artifactId>snakeyaml</artifactId>
          <version>1.30</version>
          <scope>compile</scope>
        </dependency>

是否有可能按照补救措施将版本升级到 snakeyaml 1.31 进行升级?

参考: https://security.snyk.io/vuln/SNYK-JAVA-ORGYAML-2806360

如果您使用的是gradle ,则以下答案与您相关。 可以简单地覆盖 spring 引导使用的版本,如下所示:

使用io.spring.dependency-management插件,它会自动从您使用的 Spring Boot 版本导入spring-boot-dependencies bom。

plugins {
   id 'org.springframework.boot' version '2.7.3'
}

完成后,您只需设置相应的属性即可自定义 spring 正在使用的版本:

ext {
   set('snakeyaml.version','1.32')
}

要查看依赖版本的完整列表及其要覆盖的属性,您可以在此处浏览:

https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html#appendix.dependency-versions.properties

现在,当运行./gradlew dependecies时,您可以看到, org.yaml.snakeyaml已升级到 v1.32:

    +--- org.springframework.boot:spring-boot-starter-actuator -> 2.7.3
|    +--- org.springframework.boot:spring-boot-starter:2.7.3
|    |    +--- org.springframework.boot:spring-boot:2.7.3
|    |    |    +--- org.springframework:spring-core:5.3.22
|    |    |    |    \--- org.springframework:spring-jcl:5.3.22
|    |    |    \--- org.springframework:spring-context:5.3.22
|    |    |         +--- org.springframework:spring-aop:5.3.22
|    |    |         |    +--- org.springframework:spring-beans:5.3.22
|    |    |         |    |    \--- org.springframework:spring-core:5.3.22 (*)
|    |    |         |    \--- org.springframework:spring-core:5.3.22 (*)
|    |    |         +--- org.springframework:spring-beans:5.3.22 (*)
|    |    |         +--- org.springframework:spring-core:5.3.22 (*)
|    |    |         \--- org.springframework:spring-expression:5.3.22
|    |    |              \--- org.springframework:spring-core:5.3.22 (*)
|    |    +--- org.springframework.boot:spring-boot-autoconfigure:2.7.3
|    |    |    \--- org.springframework.boot:spring-boot:2.7.3 (*)
|    |    +--- org.springframework.boot:spring-boot-starter-logging:2.7.3
|    |    |    +--- ch.qos.logback:logback-classic:1.2.11
|    |    |    |    +--- ch.qos.logback:logback-core:1.2.11
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.32 -> 1.7.36
|    |    |    +--- org.apache.logging.log4j:log4j-to-slf4j:2.17.2
|    |    |    |    +--- org.slf4j:slf4j-api:1.7.35 -> 1.7.36
|    |    |    |    \--- org.apache.logging.log4j:log4j-api:2.17.2
|    |    |    \--- org.slf4j:jul-to-slf4j:1.7.36
|    |    |         \--- org.slf4j:slf4j-api:1.7.36
|    |    +--- jakarta.annotation:jakarta.annotation-api:1.3.5
|    |    +--- org.springframework:spring-core:5.3.22 (*)
|    |    \--- org.yaml:snakeyaml:1.30 -> 1.32

This answer is based on spring docs for v2.7.3 which can be found here: https://docs.spring.io/spring-boot/docs/2.7.3/gradle-plugin/reference/htmlsingle/

您始终可以通过pom.xml中的<dependencyManagement>块更改版本号:

<dependencyManagement>
    <dependencies>

      <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>1.31</version>
      </dependency>

   </dependencies>
</dependencyManagement>

这将自动更改您的项目将使用的版本。 您可以通过之后运行mvn dependency:tree来测试它。 它应该只显示 1.31 版的snakeyaml。

重要提示:确保在集成下一版本的 Spring Boot 后立即删除此块,因为它很可能包含增加的版本。 否则,您可能会在未来更新后无意中降级版本。

另请注意,某些 lib 版本与 Spring Boot 之间可能存在不兼容,因此可能无法始终以这种方式更新版本。

SnakeYAML 是 Spring Boot 中的托管依赖项,因此您只需将以下内容添加到pom.xmlproperties部分即可使用 Z38008DD81C2F4D7985ECF6E0CE8AF1D1YAML:1.33 代替 2.33 启动 2.33。

<snakeyaml.version>1.31</snakeyaml.version>

我从我的 web 应用程序中排除了 snakeyaml 依赖项,它们工作正常。 当然我使用application.properties ,而不是application.yml

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM