首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从我的项目的maven依赖树中删除旧的、易受攻击的ApacheCommons集合版本依赖项?

如何从我的项目的maven依赖树中删除旧的、易受攻击的ApacheCommons集合版本依赖项?
EN

Stack Overflow用户
提问于 2016-01-08 07:10:04
回答 3查看 6.5K关注 0票数 2

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

我的项目有一些依赖于Apache commons collection 3.2.1的库依赖关系,这是脆弱的--例如,速度等等。

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

我既没有直接使用编写任何代码行,也没有定义它的依赖性,但它正在使用中。

我能做些什么来消除它的依赖性并强制使用安全版本- 3.2.2,4.1.

关于您的信息:JIRA使用InvokerTransformer执行任意远程代码

这是我的pom.xml的一部分,我想没有什么了不起的。

代码语言:javascript
运行
复制
...
<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>
...
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-08 07:27:40

除非我遗漏了一些显而易见的东西,在POM中指定依赖应该就足够了:

代码语言:javascript
运行
复制
<dependencies>
  <dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
  <dependency>
  ...
</dependencies>

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

当然,在其他依赖项依赖于其他版本的情况下,您可能会遇到不兼容问题,但这就是单元测试的目的,对吗?

票数 4
EN

Stack Overflow用户

发布于 2016-01-08 07:30:04

您需要做的是从受影响的依赖项中排除commons-collections,并将所需的版本直接包含在您的依赖项中。

示例pom.xml摘录假设commons-configuration使用易受攻击的commons-collections

代码语言:javascript
运行
复制
    <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.10</version>
        <exclusions>
            <exclusion>
                <artifactId>commons-collections</artifactId>
                <groupId>commons-collections</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
        <scope>runtime</scope>
    </dependency>

为了简单起见,我没有在dependency-management部分的根dependency-management中显示配置。

应该将<scope>设置为runtime,因为您提到了不直接使用库。

票数 0
EN

Stack Overflow用户

发布于 2016-02-17 02:48:16

我已经在我的pom.xml中添加了这些行,但是仍然有通用-collections3.2正在被下载。

代码语言:javascript
运行
复制
 <dependencies>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.1</version>
    </dependency>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>${apachecommonslang.version}</version>
    <exclusions>
    <exclusion>
    <artifactId>commons-collections</artifactId>
    <groupId>commons-collections</groupId>
    </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>${dbcp.version}</version>
    <exclusions>
    <exclusion>
    <artifactId>commons-collections</artifactId>
    <groupId>commons-collections</groupId>
    </exclusion>
    </exclusions>
    </dependency> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34671338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档