最近使用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. pymongo(看后转载,在原基础上添加了类连接和简单调用)

    一.MongoDB 数据库操作 1. 连接数据库 import pymongo conn = pymongo.Connection() # 连接本机数据库 # conn = pymongo.Conne ...

  2. Centos7.5中Nginx报错:nginx: [error] invalid PID number "" in "/run/nginx.pid" 解决方法

    服务器重启之后,执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错 nginx: [error] invalid PID number "" ...

  3. RxHttp 让你眼前一亮的Http请求框架

    1.前言 RxHttp在今年4月份一经推出,就受到了广大Android 开发者的喜爱,截止本文发表在github上已有1100+star,为此,我自己也建个RxHttp&RxLife 的群(群 ...

  4. RxJava的concat操作符

    更多文章请点击:http://77blogs.com/?p=170 转载请标明出处:https://www.cnblogs.com/tangZH/p/12088332.html,http://77bl ...

  5. C#_Excel数据读取与写入_自定义解析封装类_支持设置标题行位置&使用excel表达式收集数据&单元格映射&标题映射&模板文件的参数数据替换

    本篇博客园是被任务所逼,而已有的使用nopi技术的文档技术经验又不支持我需要的应对各种复杂需求的苛刻要求,只能自己造轮子封装了,由于需要应对很多总类型的数据采集需求,因此有了本篇博客的代码封装,下面一 ...

  6. python第三方库的安装pip的使用与换源(解决pip下载速度慢)

    python和其他语言一样,也有大量的第三方库 在安装python时默认都会安装pip,安装了pip后 在cmd.exe下可以运行pip 安装库 pip install 库的名字 换源 因为PyPi地 ...

  7. JAVA面向对象 - 方法重载与覆盖

    方法重载 方法重载就是在类的同种实现方式,到底采用哪种方式,取决与调用者给出的参数.方法重载特点是方法名相同,方法的参数类型,个数,顺序至少有一项不同,方法返回类型可以不同,方法的修饰符可以不同,只是 ...

  8. linuxWeb环境安装——小皮面板不错的面板

    安装环境为最新的:CentOS8.1.1911  linux的web环境安装,说白了,弄明白了就不难.为此阅读了多部文献,最先的是linux教程,重理论轻实践:之后,看了鸟哥的私房菜,有2本,每本都8 ...

  9. 【Android】LitePal的基础

    一.环境配置 LitePal 在GitHub地址为:https://github.com/LitePalFramework/LitePal 我们使用起来也很方便,直接在gradle中配置即可. 如果你 ...

  10. sum用法

    自带的sum 用法: 但是2个列表或者2个元组放在里面就报错了.这时候就要用到 numpy 里面的sum 用法了 import numpy as np list1 = [1,2,3,4,5] list ...