npm审计 - 如何确保我没有生产漏洞?

3
我正在努力确保我的项目在生产环境中没有漏洞,所以我运行了以下命令:npm audit > vulnerabilities.txt,然后搜索所有出现 "Dependency of" 的实例,这会列出一个类似以下的列表:
Line 199: Dependency of babel-preset-es2015 [dev]
Line 215: Dependency of babel-preset-es2015 [dev] 
Line 230: Dependency of babel-preset-es2015 [dev]     

我能假设如果它们全部都有 [dev] 标签,那么 npm 审核在生产环境中未发现任何软件包漏洞吗?"最初的回答"。
2个回答

1

看起来答案是肯定的。

为了验证这一点,我运行了 npm audit fix --production 然后运行 npm audit 生成了一个列表,其中每个依赖项都是标记为 [dev] 的某个东西的“Dependency Of”。

如果有一天npm直接支持在npm audit上使用--production标志,那将更容易。


2
npm audit --production在npm 6.10.0版本中发布,通过https://github.com/npm/cli/pull/202实现。 - Joe Bowbeer
问题是:这个标志只忽略你声明为开发环境的包,还是它也会忽略被标记为开发环境依赖的生产环境依赖的依赖关系?(当然是递归地)在我看来,这只影响你的顶层依赖关系,所以间接的开发环境依赖仍然被视为安全问题... - Christian

0
在旧版npm中,您可以执行以下操作,即使在更新的版本中,我发现--production标志非常有bug,并且节点仍在报告devDependencies,在这两种情况下,您可以改用以下方法:
npm prune --production --dry-run

以上代码将输出依赖项内部的任何漏洞。您需要手动修复任何漏洞。
注意:我曾经使用过的许多项目将生产依赖项错误地放在devDependencies中,而不是dependencies中。首先需要修复这个问题。(只需将声明移动到package.json中,然后npm i - 如果需要,请检查锁定文件中的确切版本)
如果从node_module使用代码客户端(有时很难确定是否使用),它应该在dependencies中(例如corejs)。
如果您有一个node后端/托管,则还需要检查它是否在生产中用于Node BE。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接