最近使用HUB工具检查到maven工程中存在高危险漏洞,虽然定位到具体的引用包了,但是在pom文件中却没有发现该依赖包。此时,我们就需要用到这条命令mvn dependency:tree,该命令会将maven工程所依赖的包按照树形格式展示出来,我们可以将输出内容导入到一个文本中,例如:mvn dependency:tree > jar.txt  ,输出信息类似于下图所示:

  从上图的示例中可以看到该工程直接依赖了两个jar包,分别是com.alibaba:fastjson:jar:1.2.51和org.apache.poi:poi-examples:jar:4.0.1,但是org.apache.poi:poi-examples:jar:4.0.1包中又引用了其它的包,也就是说该工程中间接依赖了其它的包。注意了,上图中的 "+-" 和"\-"并没有什么意义,只是为了让分级看起来更加直观;当然我们可以根据缩进情况可以确定哪些包是工程直接引用的,而哪些包又是间接引用的。最近用HUB工具检查产品代码质量时发现一个高风险漏洞,但是该漏洞是在一个间接引用包中,所以在pom文件中是不能检索的到的,这是我们就需要借助上述命令了。那现在知道方法,如何处理呢?首先,看看HUB工具检查到的问题现象,如下图所示:

 

  接着,通过mvn dependency:tree > jar.txt命令将maven工程所依赖的包关系导出,如下图所示:

  从上面两幅图中分析可知:工程中间接用到的包commons-collections:commons-collections:jar版本是3.2.1,经过HUB工具检查,发现该版本存在高风险漏洞,需要升级到3.2.2版本,才可以解决该高危问题。此外,从上图中我们还可以知道commons-collections:commons-collections:jar:3.2.1包是在net.sf.json-lib:json-lib:jar:jdk15:2.4包中被依赖的,那么若想升级commons-collections:commons-collections:jar的版本,那么就需要升级net.sf.json-lib:json-lib:jar:jdk15版本。据此,我当时就认为只要从maven官网查看一下net.sf.json-lib:json-lib:jar:jdk15包最新的版本是多少,然后在被涂鸦的包中修改一下pom文件中依赖该包 的版本号就可以了;可结果很意外,并非我所期望。我在maven官网看到的net.sf.json-lib:json-lib:jar:jdk15包最新版本就是2.4,如下图所示:

  既然上述的修改策略不可用,那么在被涂鸦的包中可以直接使用net.sf.json-lib:json-lib:jar:jdk15:2.4依赖包,但是不要间接使用该包中的commons-collections:commons-collections:jar:3.2.1依赖包,我们可以在涂鸦的包中直接依赖commons-collections:commons-collections:jar包。在maven官网中可以找到commons-collections:commons-collections:jar包的3.2.2版本,如下图所示:

  最后,我们再看看maven中所依赖包的情况,如下图所示:

  从上图中可以看出,commons-collections:commons-collections:jar:3.2.2包和net.sf.json-lib:json-lib:jar:jdk15:2.4处于同一级,都是被直接依赖的包。到此,我们的产品高危漏洞也就得到解决了。

------20191230闪

如何处理pom文件中没有找到HUB检查到高危漏洞的依赖包的更多相关文章

  1. Maven项目中在properties 中使用 ${} 来引用pom文件中的属性

    比如在pom文件中定义了属性如下: <jdbc.host.global>127.0.0.1</jdbc.host.global> <jdbc.databasename.g ...

  2. idea中的pom文件中的jar包下载不了,手动下载jar包的方法

    问题描述: 在pom文件中添加依赖的时候,程序怎么着都是下载不了,而且实验了各种方式: IDEA引MAVEN项目jar包依赖导入问题解决 https://www.cnblogs.com/a845701 ...

  3. 【IDEA】Maven踩坑:pom文件中的默认profiles不生效+IDEA中Maven的profiles使用说明

    一.问题即分析 项目pom文件中的profiles有3个配置:dev.test和production 默认配置的是dev,如下图: 但在本地起服务时,读取的配置始终是test里的. 二.原因 2.1 ...

  4. Maven pom文件中dependency scope用法

    在Maven中依赖的域有:compile.provided.runtime.system.test.import 一.compile(默认) 当依赖的scope为compile的时候,那么当前这个依赖 ...

  5. maven在pom文件中引入了icepdf-core包,pom文件却莫名的报错,说jai_core包missing

    maven在pom文件中引入了icepdf-core包,却莫名的报错,说jai_core包missing,把这个jai_core包引入之后还是一样报错,PS:icepdf-core使用的时候不用引用j ...

  6. maven在pom文件中添加你想要的jar包

    概述:POM 文件里面的依赖jar包经常需要添加, 仅需要在google中代码查找 :maven 你需的jar包名称 repository 用了Maven,所需的JAR包就不能再像往常一样,自己找到并 ...

  7. maven项目,导入的jar包,没有包含在pom文件中,install失败

    [INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[ ...

  8. 关于使用命令添加jar进自己的pom文件中-maven项目添加jar包

    现在几乎开发项目都是使用的maven项目,但是有的时候可以使用比较偏门或者新的jar可能在网上搜不到在pom文件里的配置应该如何写,因此写下这篇博客. 比如我现在想加入的AAA.jar这个包 打开cm ...

  9. pom文件中maven-assembly-plugin插件学习

    一.使用场景 如果项目是微服务架构,可能用到这个插件的概率比较高,平时普通的项目不需要这样的实现方式. 如果项目内的一部分通用功能,不需要挨个引用,则需要将通用功能部分达成jar包. 二.Maven- ...

随机推荐

  1. table-cell设置宽高、居中

    table-cell默认宽高由内容决定 <style type="text/css" rel="stylesheet"> .content { co ...

  2. vue路由--命名视图

    有时候想同时(同级)展示多个视图,而不是嵌套展示,例如创建一个布局,有 sidebar(侧导航) 和 main(主内容) 两个视图,这个时候命名视图就派上用场了.你可以在界面中拥有多个单独命名的视图, ...

  3. linux传输文件-sftp

    SFTP sftp登陆远程服务器 sftp username@ip 例如:sftp mqadmin@10.10.1.150 然后输入password即可   put:上传文件 例如:put iosta ...

  4. pikachu-XXE(xml external entity-injection)

    部分图片来自于网络,如有侵权,请联系我及时删除~ 一.XXE的概念 1.1 什么是xml xml是一种可拓展的标记语言,可以用来存储数据,例如:我们经常看到一些.xml的文件:它还可以用来传输数据,我 ...

  5. [Docker] 使用docker inspect查看宿主机与容器的共享目录

    docker inspect 容器名,可以查看到容器的元信息,在返回的j'son信息里面有个Mounts字段可以看到挂载目录 "Mounts": [ { "Type&qu ...

  6. Windows server 2012 出现大量无名已断开连接用户清楚办法

    打开cmd命令窗口,执行  taskkill /f /im winlogon.exe /t

  7. Flink知识散点

    1.KeyBy 操作后,只有当 Key 的数量大于算子的并发实例数才能获得较好的计算性能. A.而若Key 的数量比实例数量少,就会导致部分实例收不到数据,这些实例就得不到执行,这些实例的计算能力得不 ...

  8. python——面向对象(3),搬家具

    """date: 2020.2.9搬家具:将小于房子剩余面积的家具搬进房子1.定义家具类,房屋类""" class Furniture(): ...

  9. M5310-A 版本

         模块外表            型号                           BAND                          M5310-A MBRH0S04 +NB ...

  10. 《手把手教你构建自己的 Linux 系统》学习笔记(5)

    交叉编译是什么? 交叉编译就是在一个系统上,编译生成另外一个系统运行的程序文件. 「硬件体系结构」和「操作系统」的关系是什么? 硬件体系结构也可以称为架构,主要是通过 CPU 的指令集来进行区分的,操 ...