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