node.js - 安装(运行)国外 npm 模块有哪些风险?我们可以限制风险吗?

标签 node.js security npm permissions

根据this post ,恶意 npm 模块是真实存在的。似乎唯一真正的方法是“了解您正在安装的内容。”

当我 npm installrequire() 一个模块时,

  • 它可以访问我的整个文件系统吗?
  • 我可以限制文件系统对特定目录的访问吗?是使用 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/

相关文章:

.net - Visual Studio 2008 CAS/安全设置

security - 防止 session 劫持的最佳方法是什么?

algorithm - 在哈希中包含时间戳,但如何比较哈希?

node.js - 为什么在尝试导入时括号 '{' 是意外标记?

javascript - 如何使用本地 npm 包中的 React 组件

javascript - 如何在正确的范围内做出 Promise,以便它具有要查询的正确值并返回?

php - 如何最好地处理需要很长时间才能完成的 ajax 请求?

javascript - Electron:如何捕获来自主进程的所有请求响应?

javascript - Node.js - 公开模块内的函数

node.js - 使用 socket.io、node.js 和 mongodb 更新服务器端的 ejs 变量