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

npm audit - how to make sure I have no production vulnerabilities?

我试图确保我的项目在生产环境中没有漏洞,所以我 运行:

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 audit 在生产中没有发现包漏洞吗?

看来答案是肯定的

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

如果在某些时候 npm 直接在 npm audit 上支持 --production 标志,那会更容易。

在较旧的 npm 版本中,您可以执行以下操作,即使在较新的版本中,我发现 --production 标志非常错误并且节点仍然报告 devDependencies,在这两种情况下您都可以使用它:

npm prune --production --dry-run

以上将从内部依赖项输出任何漏洞。不过,您需要手动修复所有漏洞。

注意: 我工作过的许多项目都错误地在 devDependencies 中包含生产依赖项而不是依赖项。这当然需要先解决。 (只需将声明移至 package.json 和 npm i - 如果需要,请检查锁定文件中的确切版本)

如果来自 node_module 的代码在客户端使用(如果它被使用有时很难分辨)它应该在依赖项中(例如 corejs)

如果您有一个节点 backend/hosting 那么您需要检查它是否也在生产中的 Node BE 中使用。