你怎么能确保你的npm依赖是安全的?

时间:2017-03-08 18:38:49

标签: node.js npm

例如,当您执行npm init并安装express时,最终会得到一个node_modules文件夹,其中包含20个其他文件夹。

我从未遇到过这个问题......但是,这不是一个可能引起关注的问题吗?

4 个答案:

答案 0 :(得分:1)

编写Node.js应用程序时,很容易出现数百甚至数千个依赖关系。 例如,如果您依赖Express,则直接依赖于其他27个模块,当然也依赖于那些依赖项,因此手动检查所有这些都不是一个选择!

唯一的选择是自动对依赖项进行更新/安全审核。为此,有免费和付费选项:

  • npm过时了
  • RisingStack跟踪
  • NSP
  • GreenKeeper
  • Snyk

答案 1 :(得分:0)

当然,其中可能存在恶意代码。它就像安装软件一样,不安装随机模块。只需确保您安装的软件包是值得信赖的。

答案 2 :(得分:0)

是的,要记住这一点。话虽如此,大部分时间,您将处理相当流行的库/包,可以安全地假设它们是安全的。但是,如果您需要下载一个不受欢迎的版本,请查看源代码。

编辑:在全局安装软件包时,对安全性的担忧变得更加严重。永远不要在全球范围内安装一个您有任何疑问的软件包。

答案 3 :(得分:0)

首先,在安装软件包之前做功课很重要。

在npmjs.com上阅读软件包的页面,并查看谁发布了软件包版本数每周下载数 。如果这些数字非常低,我会通过或一定要检查源代码。

另一件事,要注意的是当您键入程序包名称时。可能会出现错字抢注,并且有一些已发布的软件包,其名称与流行软件包很接近。

就NPM(注册表)的安全性而言,它们会定期进行渗透测试和传出代码审核。此外,他们报告漏洞以打包作者并处理来自其他用户的漏洞报告。但是,这是对垃圾邮件发送者,恶意软件等的不间断斗争。


您可以运行的命令:

  • npm outdated (适用于本地用户)和 npm outdated -g --depth=0 (适用于全球人员)
    这将检查哪些软件包已过时,并且将为每个过时的软件包列出“当前所需的最新版本”。

  • npm audit
    这将生成有关安全漏洞的报告,其中包括受影响的程序包名称,漏洞严重性和说明等。

此外,当您使用npm audit安装软件包时,npm install自动运行。

  • npm audit fix
    这会自动将兼容的更新安装到易受攻击的依赖项上。


文件:
https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities


手表:
https://www.youtube.com/watch?v=H48KuESn2sk