使用过Dependency check的同学,一定会遇到这个痛点—— 每次执行依赖扫描时,由于网络问题会导致NVD下载种子数据的过程中的种种失败,不仅浪费了大量时间,还会因为下载文件的不完整性直接导致依赖检测的失败。本文主要解决这个痛点,通过Mysql来存储NVD数据来保障下载NVD数据的稳定性!这里假设读者对dependency check有使用经验,如果大家不熟悉dependency check可以参考以下两篇文章

代码依赖包安全漏洞检测神器 —— Dependency Check

Dependency Check的实战应用

Mirroring NVD

通常的解决方案就是:通过Mirroring NVD 的形式(这里不做重点讨论),简单的说就是:

1. 把NVD相关文件下载到本地服务器(通过NIST Data Mirror即可,详情请参考:https://github.com/stevespringett/nist-data-mirror/),然后创建一个http sever来访问这些文件(可以直接使用docker镜像)。

2. 然后定期更新本地服务器中的nvd文件

3. 客户端执行Dependencycheck 时, 设置如下两个参数即可:

--cveUrlModified http://你的本地服务器:30006/nvdcve-1.1-modified.json.gz

--cveUrlBase http://你的本地服务器:30006/nvdcve-1.1-modified.json.gz

Mysql 存储nvd 数据

接下来我们就讲解如何配置数据库来存储nvd 数据,我们引入官网的一句话来证明其必要性! “Some organizations may want to use a more robust centralized database.”

目前支持的数据库包括:h2、mysql、oracle、sql server、postgresQL。这里我们以mysql作为实例讲解!

成功配置仅需要如下三步:

首先,初始化数据库,执行链接中的脚本即可

https://github.com/jeremylong/DependencyCheck/blob/main/core/src/main/resources/data/initialize_mysql.sql

如果大家需要其他数据库的初始化脚本,可以到链接中的上级目录下载即可:

https://github.com/jeremylong/DependencyCheck/tree/main/core/src/main/resources/data

脚本执行成功后,会创建db、表、一些存储过程和用户dcuser,如下图所示:

此时,vulnerability表中的数据都是空的。

然后,非常重要!非常重要!非常重要!重要的事情说三遍,此处浪费了我半天的时间去发现问题!

一定要把mysql 数据库的驱动包(以mysql-connector-java-8.0.28.jar为例)拷贝到dependency-check-7.1.0-release\dependency-check\lib的目录中。

最后,运行dependency-check,命令如下:

dependency-check.bat --scan D:\dependency\jar_check --format HTML --dbDriverName com.mysql.cj.jdbc.Driver --connectionString jdbc:mysql://127.0.0.1:3306/dependencycheck --dbUser dcuser --propertyfile d:\dependency\pwd.properties

这里dbDriverName 表示数据库的dirver名称;

connectionString 表示连接数据库的字符串,执行初始化脚本后创建的数据库叫dependencycheck

dbUser 是用户名,初始化的用户名叫 dcuser

propertyfile 这个参数是表示dcuser 的密码,需要在properties文件中存储,形式是:

data.password=DC-Pass1337! 这个密码是执行初始化脚本后的默认密码

运行逻辑是,先把nvd数据信息插入到mysql的vulnerability表中,然后在进行依赖检测,如下图所示:

自此数据库配置完成,但这仍然不是最优的方案,客户端执行脚本后,仍然需要更新nvd数据到数据库中,虽然稳定性会得到保障,但是依然会浪费一定时间!那么如何解决这个问题呢?我会在下一篇文章中进行分享,请持续关注!

Dependency check配置Mysql数据库存储nvd数据相关推荐

  1. 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...

    本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息.分享给大家供大家参考,具体如下: 数据库存储爬取的信息(MySQL) 爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在 ...

  2. ubuntu mysql数据储存在哪里_如何更改在Ubuntu下的MySQL数据库存储位置?

    在默认的数据库存储位置下就会有个文件夹mysqldb.要操作数据库首先得停止数据库进程: $sudo /etc/init.d/mysql stop 本文以转移到/home/mysql这个位置为例,下面 ...

  3. 【入门】Spring-Boot项目配置Mysql数据库

    前言 前面参照SpringBoot官网,自动生成了简单项目点击打开链接 配置数据库和代码遇到的问题 问题1:cannot load driver class :com.mysql.jdbc.Drive ...

  4. 连接并配置好无极网络VPS主机 | 配置Mysql数据库 | Centos 常用操作| vim操作 | 保持centos的任务 | 阿里云mysql | Node.js | 腾讯云mysql

    在无极网络获得主机并用Xshell6连接上 配置主机的DNS和网络连接 # http://www.5jwl.com/style/info/shownews.asp?id=1383 Xshell 6 ( ...

  5. nacos配置mysql数据库不管用_Nacos配置mysql数据库

    在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况.0.7版本增加了支持mysql数据源能力,所以只要使用0.7及以上版本的nacos,便可以配置my ...

  6. MySQL数据库- 几种数据迁移的方法详解都在这了!看完必懂

    数据迁移的几种方式 - MySQL数据库 本文关键字:MySQL.数据库.数据迁移.导入.导出 文章目录 数据迁移的几种方式 - MySQL数据库 一.数据迁移 1. 数据的生命周期 2. 数据迁移的 ...

  7. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  8. mysql数据库千万级别数据的查询优化和分页测试

    原文地址:原创 mysql数据库千万级别数据的查询优化和分页测试作者:于堡舰  本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处  http://blog.sina.co ...

  9. MySQL—05—MySQL如何处理SQL语句;MySQL数据库存储引擎介绍;

    一. MySQL 中的执行计划 1 MySQL 执行计划 在 MySQL 中可以通过 explain 关键字模拟优化器,执行 SQL 语句,从而知道 MySQL 是 如何处理 SQL 语句的. 2 M ...

最新文章

  1. Android小项目之--前台界面与用户交互的对接 进度条与拖动条(附源码)
  2. server 2008 mysql 报错 0xc000007b_docker插件部署项目,volumes报错invalid volume specification...
  3. 史上最全的SpringBatch学习教程
  4. Android -- 短信
  5. mysql数据表设计要点以及快门
  6. 前端学习(395):京东制作页面4自己制作icon图标
  7. wps怎么统一修改标点符号_毕业论文的参考文献怎么加入??脚注如何降重?
  8. SQL性能健康检查脚本
  9. 宾夕法尼亚大学发明了第一代电子管计算机,新手计算机基础入门
  10. 微信快速引流的18种加人方法秘籍
  11. DOS (Windows)命令详解
  12. pytorch:线性回归实战
  13. python 下载qq群文件_利用多线程快速下载腾讯QQ群文件的方法
  14. Spring-Boot Dubbo 整合
  15. windows10使用Debug
  16. 不一样的解决Non-static method 'xxx' cannot be referenced from a static context
  17. Spring定时任务-@Scheduled
  18. STM32F1CAN通讯
  19. 编写 react-redux 库,封装 react-reduc.js 的心里路程(原理及详解)
  20. 证实!对华28nm以下大硅片出口管制已纳入瓦森纳协定

热门文章

  1. Unity 使场景物体始终面向摄像机
  2. nodejs之二维码扫描-实现兑换码自动核销
  3. 手机浏览器的出路 App化能否拯救其未来?
  4. 玻璃幕墙清洗机器人市场前景_玻璃幕墙越障清洁机器人
  5. 前端网页配色网站推荐
  6. pythonweb数据可视化_独家 | 基于Python实现交互式数据可视化的工具(用于Web)
  7. Java 面试(一) | Java基础部分
  8. python如何查看函数参数_如何找到Python函数的参数数?
  9. android fragment相机,简单的易于集成的Android相机Fragment – Camer...
  10. 微信小程序template模板与component自定义组件的区别和使用