节点js插件权限
Node js plugin permissions
我使用 Sails.js 创建了一个网络服务器,并希望允许第三个开发人员创建 node.js 可从网页(商店)安装的插件。
我的问题是我不希望这个插件需要 sails(或其他关键模块)并且可以访问数据库和服务并做他们想做的事。
例如使用 fs 并删除所有文件。
我该怎么做?我不知道 node.js 是否可以在这个自己的目录
上锁定一些脚本
我不认为该节点公开了一些沙盒功能,因此当您将 js 代码加载到节点中时,该代码可以执行它想要的操作。
根据您的描述,您的插件更像是浏览器 javascript 代码,因此我认为您可以使用无头浏览器来执行您的代码并检索结果。我从来没有自己尝试过,但它应该有效。你只需要弄清楚如何将参数传递给插件并获得结果,性能也会很差,因为无头浏览器非常笨重。尝试查看
另一个解决方案是 运行 插件直接在节点内,但在 运行 之前清理代码。有一些项目,例如:
https://github.com/asvd/jailed
它们可以帮助您限制插件的功能。
无论如何你确定吗?在我见过的任何主要 CMS 平台(wordpress、joomla、drupal、liferay ...)中,平台的作者信任插件作者和插件总是可以做他们想做的事。
我使用 Sails.js 创建了一个网络服务器,并希望允许第三个开发人员创建 node.js 可从网页(商店)安装的插件。
我的问题是我不希望这个插件需要 sails(或其他关键模块)并且可以访问数据库和服务并做他们想做的事。 例如使用 fs 并删除所有文件。
我该怎么做?我不知道 node.js 是否可以在这个自己的目录
上锁定一些脚本我不认为该节点公开了一些沙盒功能,因此当您将 js 代码加载到节点中时,该代码可以执行它想要的操作。
根据您的描述,您的插件更像是浏览器 javascript 代码,因此我认为您可以使用无头浏览器来执行您的代码并检索结果。我从来没有自己尝试过,但它应该有效。你只需要弄清楚如何将参数传递给插件并获得结果,性能也会很差,因为无头浏览器非常笨重。尝试查看
另一个解决方案是 运行 插件直接在节点内,但在 运行 之前清理代码。有一些项目,例如:
https://github.com/asvd/jailed
它们可以帮助您限制插件的功能。
无论如何你确定吗?在我见过的任何主要 CMS 平台(wordpress、joomla、drupal、liferay ...)中,平台的作者信任插件作者和插件总是可以做他们想做的事。