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 中使用。
我试图确保我的项目在生产环境中没有漏洞,所以我 运行:
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 中使用。