2015-06-06 77 views
2

我使用Sails.js创建了一个Web服务器,并希望允许第三个开发人员创建可从网页(存储)安装的node.js插件。节点js插件权限

我的问题是我不希望这个插件需要sails(或其他关键模块),并有权访问数据库和服务,并做他们想做的事情。 例如使用fs并删除所有文件。

我该怎么做?我不知道node.js是否可以在这个目录上锁定一些脚本

回答

0

我不认为这个节点公开了一些沙箱功能,所以当你将一个js代码加载到节点时,代码可以做它想做的事情。

从你的描述你的插件更像是浏览器的JavaScript代码,所以我认为你可以使用无头浏览器来执行你的代码并检索结果。我从来没有尝试过,但它应该工作。你只需要弄清楚如何将参数传递给插件并得到结果,而且由于无头浏览器非常笨重,性能也会非常糟糕。试着看一下

http://phantomjs.org/

另一种方案是直接运行的内部节点的插件,但在运行前消毒的代码。有喜欢的一些项目:

http://gf3.github.io/sandbox/

https://github.com/asvd/jailed

他们可以帮助你限制了插件的权力。

无论如何你确定吗?在我见过的任何主流CMS平台(wordpress,joomla,drupal,liferay ...)中,该平台的作者相信插件作者和插件可以始终按照他们的想法进行操作。

+0

感谢您的回答!我会测试这种可能性,对于这个项目来说性能很重要(因为它会运行在树莓派上),所以phantomjs不是一个好的解决方案。沙盒模块更适合我的需求。 是的我需要在其他CMS平台插件可以做任何事情,但WordPress或Joomla插件几乎不会崩溃整个服务器,但与Node.js,如果它崩溃或有问题,它是整个服务器谁崩溃...我想保证最低:) – jaumard