Open kangyana opened 1 year ago
如何确保所有 npm install 的依赖都是安全的?
npm install
当有一个库偷偷在你的笔记本后台挖矿怎么办? 比如,不久前一个周下载量超过八百万的库被侵入,它在你的笔记本运行时会偷偷挖矿。
Audit,审计,检测你的所有依赖是否安全。npm audit/yarn audit 均有效。
Audit
npm audit/yarn audit
通过审计,可看出有风险的 package、依赖库的依赖链、风险原因及其解决方案。
$ npm audit ┌───────────────┬──────────────────────────────────────────────────────────────┐ │ high │ Regular Expression Denial of Service in trim │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Package │ trim │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Patched in │ >=0.0.3 │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Dependency of │ @mdx-js/loader │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Path │ @mdx-js/loader > @mdx-js/mdx > remark-mdx > remark-parse > │ │ │ trim │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ More info │ https://www.npmjs.com/advisories/1002775 │ └───────────────┴──────────────────────────────────────────────────────────────┘ 76 vulnerabilities found - Packages audited: 1076 Severity: 49 Moderate | 27 High ✨ Done in 4.60s.
你可以在我的笔记本上挖矿,但绝不能在生产环境服务器下挖矿,此时可使用以下两条命令。
$ npm audit production $ yarn audit dependencies
通过 npm audit fix 可以自动修复该库的风险,原理就是升级依赖库,升级至已修复了风险的版本号。
npm audit fix
$ npm audit fix
yarn audit 无法自动修复,需要使用 yarn upgrade 手动更新版本号,不够智能。
yarn audit
yarn upgrade
synk (opens new window)是一个高级版的 npm audit,可自动修复,且支持 CICD 集成与多种语言。
npm audit
$ npx snyk $ npx wizard
可通过 CI/gitlab/github 中配置机器人,使他们每天轮询一次检查仓库的依赖中是否有风险。
在 Github 中,可单独设置 dependabot 机器人,在仓库设置中开启小机器人,当它检测到有问题时,会自动向该仓库提交 PR。
dependabot
而它的解决方案也是升级版本号。
如何确保所有
npm install
的依赖都是安全的?当有一个库偷偷在你的笔记本后台挖矿怎么办? 比如,不久前一个周下载量超过八百万的库被侵入,它在你的笔记本运行时会偷偷挖矿。
1. Audit
Audit
,审计,检测你的所有依赖是否安全。npm audit/yarn audit
均有效。通过审计,可看出有风险的 package、依赖库的依赖链、风险原因及其解决方案。
你可以在我的笔记本上挖矿,但绝不能在生产环境服务器下挖矿,此时可使用以下两条命令。
通过
npm audit fix
可以自动修复该库的风险,原理就是升级依赖库,升级至已修复了风险的版本号。yarn audit
无法自动修复,需要使用yarn upgrade
手动更新版本号,不够智能。synk (opens new window)是一个高级版的
npm audit
,可自动修复,且支持 CICD 集成与多种语言。2. CI 机器人
可通过 CI/gitlab/github 中配置机器人,使他们每天轮询一次检查仓库的依赖中是否有风险。
在 Github 中,可单独设置
dependabot
机器人,在仓库设置中开启小机器人,当它检测到有问题时,会自动向该仓库提交 PR。而它的解决方案也是升级版本号。