一起來(lái)看看Dependency Check的實(shí)戰(zhàn)應(yīng)用
Dependency Check來(lái)檢查代碼中是否存在任何已知的,公開(kāi)披露的安全漏洞。他檢查依賴項(xiàng)中是否存在漏洞的原理也跟我們熟知的病毒查殺軟件一樣,預(yù)先定義好目前已知的安全漏洞庫(kù),檢查依賴包時(shí),發(fā)現(xiàn)這些漏洞就會(huì)報(bào)錯(cuò),最后定期更新安全漏洞庫(kù)即可!關(guān)于Dependcy check 的原理和基礎(chǔ)使用方式我在前面的文章中已經(jīng)介紹了,具體參考文章:
代碼依賴包安全漏洞檢測(cè)神器——Dependency Check
本文我會(huì)重點(diǎn)介紹一下dependency check在實(shí)戰(zhàn)中的使用細(xì)節(jié),主要包括在maven中的使用配置和命令行方式的使用細(xì)節(jié)。
Maven方式
在maven構(gòu)建時(shí),執(zhí)行dependency check的jar包依賴檢測(cè)工作。
基礎(chǔ)配置如下:

如果需要添加參數(shù),需要在
- <configuration>
- <failBuildOnCVSS>8</failBuildOnCVSS>
- </configuration>
dependency maven中常用的配置如下所示:

其中cveUrlModified 和cveUrlBase可以指定本地的nvd庫(kù)來(lái)提高更新效率;
outputDirectory 指定了檢測(cè)報(bào)告的生成位置,默認(rèn)是html報(bào)告;
excludes 設(shè)置不需要檢測(cè)的jar包,在實(shí)際項(xiàng)工作中,經(jīng)常有一些維護(hù)類的項(xiàng)目,使用的框架版本很低,例如spring 3.x版本,會(huì)有很多的jar包安全問(wèn)題,基于某些原因這些jar包不能升級(jí),因此使用dependency check檢測(cè)時(shí)需要跳過(guò)對(duì)這些jar包的檢測(cè),這時(shí)就需要使用excludes參數(shù)了。注意:這個(gè)格式是固定的,采用
groupId:artifactId::version的形式(此處花費(fèi)我很多時(shí)間調(diào)試)
如果想?yún)⒖几嚓P(guān)于dependency check maven configuration的配置請(qǐng)參考:
https://jeremylong.github.io/DependencyCheck/dependency-check-maven/configuration.html
命令行方式
關(guān)于dependency-check的命令行參數(shù)的具體使用大家可以通過(guò)下面命令查看詳情
- dependency-check.bat --advancedHelp
在這里我給大家介紹幾點(diǎn)需要特別注意的地方
參數(shù)--format 用來(lái)指定輸出報(bào)告的格式,默認(rèn)是html
如果設(shè)置--format ALL,將會(huì)分別生成HTML, XML, CSV, JSON形式的檢測(cè)報(bào)告。如果需要生成多種格式的測(cè)試報(bào)告可以進(jìn)行如下設(shè)置:
- --format HTML --format CSV
會(huì)只生成html 和csv兩種格式的測(cè)試報(bào)告,命名為
- dependency-check-report.csv和dependency-check-report.html
--out 報(bào)告路徑,會(huì)指定生成報(bào)告的路徑
--exclude A.jar,不檢測(cè)A.jar,如果不檢測(cè)多個(gè)jar包,則需要設(shè)置如下:
- --exclude A.jar --exclude B.jar --exclude C.jar…形式比較麻煩。
- --scan ./ 對(duì)當(dāng)前目錄進(jìn)行掃描,可以直接掃描maven工程的項(xiàng)目。