NodeJS&NPM:软件包安全性

鉴于NodeJS的stream行程度以及NPM的工作原理,确保您永远不会安装不安全/恶意软件包的最佳方法是什么? 对我来说,这似乎是一个巨大的漏洞在build筑,完全依靠用户评论,像StackOverflow,个人博客等网站上的评论。我做了一些search,所有我可以find的是一个“计划”一旦投诉提出所述用户违反了行为准则,则移除违规用户。

NPM行为准则https://www.npmjs.com/policies/conduct

以下是你如何发布一个包… https://docs.npmjs.com/getting-started/publishing-npm-packages

于是我开始考虑有人可以做什么坏事…也许创build一个非常有用的包,然后特洛伊木马依赖于一个包做一些坏事。 即使我(作为安装者)审查了我亲自安装的软件包,我也许永远不会收到有问题的代码,特别是如果代码被混淆了,就像这样:

eval((new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString())); 

这个代码简单地回应/ etc / passwd文件到你的标准输出。 而已。 通过运行这个certificate它:

 new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString() 

那些抓住这个评价的人,对你有好处! 但是,如果没有评估,我可以用很多不同的方式来包装,所以这只是一个例子。

所以,所有这些说…社区做什么来应对这种可能性? 我在哪里可以find更多关于如何保持我的系统安全?

确保您从npm安装的软件包是安全的可能解决scheme之一是使用节点安全(nodesecurity.io)团队提供的nsp :命令行实用程序。

 $ npm install -g nsp 

然后,在你的项目的目录(package.json所在的位置):

 $ nsp check 

会产生一个可能的漏洞报告,这里是例子:

在这里输入图像描述