问题描述
在项目中,我们有多种方法来扫描项目中的漏洞。Dependabot 可以配置为检查代码库中的问题,并自动提交拉取请求来解决问题。另一方面,npm audit 可以扫描 NPM 解决方案中使用的包,以检测已知的漏洞。我们想要确定在启用 Dependabot 的情况下,是否有必要在我们的流水线中使用 npm audit。我们关心的仅仅是这些工具所能检测到的问题,而不是它们如何工作(即它们是否会导致流水线阻塞/失败)。
解决方案
根据用户投票评选为最佳回答的内容,Dependabot 和 npm audit 在漏洞检测方面有一些不同的特点。
共同的数据源
Dependabot 和 npm audit 都从 Node Security Working Group 数据库中获取数据,用于检测基于 Node 的项目中的漏洞。但是,Dependabot 还有一个额外的功能,可以检查许多其他类型的项目的依赖关系。
不同的报告内容
Dependabot 生成的每个报告都包含有用的信息,并且直接链接到 GitHub Advisory Database 中的列表。这些链接提供了多个其他列表的链接,比如 NIST(国家标准与技术研究院)。另一方面,npm audit 的报告仅限于一个链接,指向一个包含较少信息的 npm advisory 列表。
综合比较
总体而言,Dependabot 涵盖了 npm audit 的所有功能,甚至更多。除非你需要在软件包脚本中使用定制的审核流程,否则不需要同时使用两者。
最新更新
截至 2021 年 10 月 7 日,两种方法都提供了来自 GitHub Advisory Database 的信息。从上面的链接中可以看到,以前的 npmjs.org 列表现在已重定向到 GitHub。在此更改之后,我之前提到的其他观点仍然成立。
总结
在项目中,Dependabot 和 npm audit 都用于漏洞检测。它们都使用了 GitHub Advisory Database 中的数据,但Dependabot具有更多的功能,可以涵盖多种项目类型。因此,除非你需要特定的审核流程,否则在启用 Dependabot 的情况下,无需再单独使用 npm audit。
注意:本文仅关注漏洞检测方面的差异,而不考虑工具的工作方式。