java - 如何从项目的 Maven 依赖树中删除旧的易受攻击的 Apache 公共(public)集合版本依赖项?

标签 java maven apache-commons-collection

我的 Java 应用程序项目由 Maven 管理。

我的项目有一些库依赖项再次依赖于易受攻击的 Apache commons collection 3.2.1 - 例如Apache 公共(public)配置、速度等

(我可以通过运行 mvn dependency:tree 命令看到它正在被使用。)

我既没有直接使用 Apache commons collection 编写任何代码行,也没有定义它的依赖关系,但它正在被使用。

我该怎么做才能消除它的依赖性并强制使用安全版本 - 3.2.2、4.1。

供您引用: JIRA Bug - Arbitrary remote code execution with InvokerTransformer

这是我的 pom.xml 的一部分,我想没有什么特别的。

...
<dependency>
    <groupId>commons-configuration</groupId>
    <artifactId>commons-configuration</artifactId>
    <version>1.6</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>
...

最佳答案

除非我遗漏了一些明显的东西,否则只需在您的 POM 中指定依赖项就足够了:

<dependencies>
  <dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
  <dependency>
  ...
</dependencies>

如果您将它指定为您的 <dependencies>顶部部分,它将覆盖 commons-collections 的任何其他传递包含.

当然,您可能会遇到其他依赖项依赖于其他版本的不兼容性,但这就是单元测试的目的,对吧? ;-)

关于java - 如何从项目的 Maven 依赖树中删除旧的易受攻击的 Apache 公共(public)集合版本依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34671338/

相关文章:

java - 在 Java 中通过多个比较器对列表进行排序的有效方法

java - Java CircularFifoQueue 的性能

java - 如何初始化一个public static final read-only Linked Map(双向图)

java - Gradle 中的 Sun JPEGImageEncoder 编译

java - 序列化 Jackson JSON 树模型时排除 NullNode

java - Netbeans Maven无法执行项目目标

maven - 如何使用 Hudson/Jenkins 和 Maven 将静态 Web 资源发布到 Amazon S3?

java - 使用自定义值集合类型创建 Commons Collections MultiValueMap

java - 按属性对自定义对象的 ArrayList 进行排序

java - 使用buck构建maven项目