当前位置: 首页 > news >正文

Maven 依赖漏洞扫描检查插件 dependency-check-maven 的使用

前言

在现代软件开发中,开源库的使用愈加普遍,然而这些开源库中的漏洞往往会成为潜在的安全风险。如何及时的发现依赖的第三方库是否存在漏洞,就变成很重要了。

本文向大家推荐一款可以进行依赖包漏洞检查的 maven 插件 dependency-check-maven。通过这个插件可以扫描出项目中是否依赖已经存在的安全漏洞包及对应版本。

相关官方网址:

  • https://owasp.org/www-project-dependency-check/
  • https://jeremylong.github.io/DependencyCheck/
  • http://jeremylong.github.io/DependencyCheck/dependency-check-cli/
  • https://github.com/jeremylong/DependencyCheck

使用方法

1、申请 nvdApiKey

打开网址 https://nvd.nist.gov/developers/request-an-api-key 提交申请,会在填写的邮箱中收到下发的 API Key,如下图所示:

image-20240908193303869

PixPin_2024-09-02_19-10-48

PixPin_2024-09-02_19-09-45

PixPin_2024-09-02_19-09-02

2、添加插件依赖

在代码工程的 pom.xml 文件中添加插件依赖,内容如下:

    <build><plugins>......<plugin><groupId>org.owasp</groupId><artifactId>dependency-check-maven</artifactId><version>10.0.3</version><configuration><autoUpdate>true</autoUpdate><nvdApiKey>6d88f39a-aa0a-4312-xxxx-xxxxxxxxxxx</nvdApiKey></configuration><executions><execution><goals><goal>check</goal></goals></execution></executions></plugin></plugins></build>

更多配置参数详解官方文档: https://jeremylong.github.io/DependencyCheck/dependency-check-cli/arguments.html

3、执行插件分析

打开命cmd命令行,执行命令 mvn dependency-check:check 即可进行分析检查。

如果是 idea 开发工具,可以直接在右侧的 maven 窗口中直接执行,如下图所示:

image-20240908193754659

等待插件执行。

第一次执行的话,他的速度可能会比较慢,因为他需要从 NIST 托管的国家漏洞数据库下载漏洞数据到本地备份库。

如果执行出现错误 Failed to initialize the RetireJS repo,可以手工下载 jsrepository.json 然后拷贝到 Maven本地私仓路径\org\owasp\dependency-check-data 中对应版本的目录下,如下图所示:

image-20240908194210754

4、查看结果报告

执行完毕后,会在代码工程的 target 目录下产生 dependency-check-report.html 文件,这个文件是一个静态的 html 文件,通过浏览器即可打开查看。

image-20240908194914116

点击每个链接可以插件具体的漏洞信息描述:

image-20240908195052017


(END)

http://www.lryc.cn/news/433370.html

相关文章:

  • 2. 下载rknn-toolkit2项目
  • xhr、ajax、axois、fetch的区别
  • 【HuggingFace Transformers】OpenAIGPTModel源码解析
  • macOS安装Java和Maven
  • SpringBoot教程(安装篇) | Elasticsearch的安装
  • 前端登录鉴权——以若依Ruoyi前后端分离项目为例解读
  • 【Tools】大模型中的自注意力机制
  • PhotoZoom Classic 9软件新功能特性及安装激活图文教程
  • 【数据结构】直接插入排序
  • JavaScript 实现虚拟滚动技术
  • 【重学 MySQL】十八、逻辑运算符的使用
  • 关于 QImage原始数据格式与cv::Mat原始数据进行手码数据转换 的解决方法
  • 前端WebSocket客户端实现
  • 读取realsense d455双目及imu
  • 浮点的运算
  • 对随机游走问题的分析特定行为模式的建模
  • JVM面试(七)G1垃圾收集器剖析
  • php转职golang第一期
  • java后端服务监控与告警:Prometheus与Grafana集成
  • 【系统架构设计师】工厂方法设计模式
  • 怎样解决OpenEuler下载sdl2失败
  • 基于Python的自然语言处理系列(2):Word2Vec(负采样)
  • 每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟
  • 大数据之Flink(六)
  • 设计模式学习[5]---装饰模式
  • 3.C_数据结构_栈
  • Debian11安装DolphinScheduler
  • C语言深度剖析--不定期更新的第五弹
  • python之事务
  • 文件加密软件都有哪些?推荐6款文件加密工具