我的Java应用程序项目由Maven管理。
我的项目有一些依赖于Apache commons collection 3.2.1
的库依赖关系,这是脆弱的--例如,速度等等。
(我可以看到它是通过运行mvn dependency:tree
命令使用的。)
我既没有直接使用编写任何代码行,也没有定义它的依赖性,但它正在使用中。
我能做些什么来消除它的依赖性并强制使用安全版本- 3.2.2,4.1.
关于您的信息:JIRA使用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>
...
发布于 2016-01-08 07:27:40
除非我遗漏了一些显而易见的东西,在POM中指定依赖应该就足够了:
<dependencies>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
<dependency>
...
</dependencies>
如果您指定它为 of您的<dependencies>
部分,它将覆盖commons-collections
的任何其他传递包含。
当然,在其他依赖项依赖于其他版本的情况下,您可能会遇到不兼容问题,但这就是单元测试的目的,对吗?
发布于 2016-01-08 07:30:04
您需要做的是从受影响的依赖项中排除commons-collections
,并将所需的版本直接包含在您的依赖项中。
示例pom.xml
摘录假设commons-configuration
使用易受攻击的commons-collections
<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
,因为您提到了不直接使用库。
发布于 2016-02-17 02:48:16
我已经在我的pom.xml
中添加了这些行,但是仍然有通用-collections3.2
正在被下载。
<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>
https://stackoverflow.com/questions/34671338
复制相似问题