根据this post ,恶意 npm 模块是真实存在的。似乎唯一真正的方法是“了解您正在安装的内容。”
当我 npm install
和 require()
一个模块时,
- 它可以访问我的整个文件系统吗?
- 我可以限制文件系统对特定目录的访问吗?是使用
package.json
设置,还是使用操作系统的 native 用户/组文件权限系统? - 它可以执行任何命令吗?下载任何内容、执行任何内容、上传任何内容?
- 我可以限制这个吗?
最佳答案
npm 包(就像任何库/软件一样)可以完全访问您放置它的任何环境。如果您可以在 Node.js 中做到这一点,npm 包也可以做到。 作为包管理器,npm 可以有效地将文件放在任何地方(例如,恶意可执行文件),并且当调用函数时,它可以执行其编程的任何操作(例如,执行恶意软件)。
软件审核是真实存在的,各个开源组织正在大力插入,以帮助确保软件不存在任何严重缺陷(有意或无意)。在安装之前,找到 package.json 文件并阅读它,如果有些东西看起来可疑,您可能需要更深入地挖掘(向开发人员或社区成员寻求帮助)。如果该软件是开源的,请寻求审核(或您自己审核)。
这篇 Medium 文章中列出了一些建议:https://medium.com/@nodepractices/were-under-attack-23-node-js-security-best-practices-e33c146cb87d
建议:尝试成为一名白帽黑客。检查技术并尝试用您编写的一些恶意代码感染您自己的机器,然后看看是否有办法避免它。
来源:
https://docs.npmjs.com/files/package.json
https://docs.npmjs.com/cli/install
关于node.js - 安装(运行)国外 npm 模块有哪些风险?我们可以限制风险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58032356/