我想使用node.js(或其他SSJS解决方案),运行我自己的代码+内部编写的代码(不可信)。
任何分离和保护我自己的代码的方法?我可以限制不受信任的代码的模块和系统效果(限制对文件,非HTTP端口等的访问)吗?
答案 0 :(得分:1)
你可以查看这个项目,看起来很有希望:
http://github.com/gf3/node-sandbox
就个人而言,我不使用Node来执行任意SSJS。你可能不会喜欢这个解决方案,但它对我来说大约一年都很好:
有一个Perl实现的Spidermonkey API(Spidermonkey是Firefox的JS引擎)that's available。在一些CGI的帮助下,我把它搞定了。您可以在其中准确指定要公开的函数(已授予,它在Perl ... blech中)并执行您喜欢的任何代码。由于整个设置完全是沙箱,因此不存在漏洞风险。它不模拟DOM。
我在服务器上实现此功能(以防止滥用)的方法是发出令牌,这些令牌通过其他服务器上的REST API授予一次性访问权限。这是一个简单的HMAC实现,包括一个时间戳来强制令牌的合法性。当Perl脚本收到请求时,它会验证令牌并处理脚本(脚本应该只是POST请求的一部分)。然后Perl脚本只写出结果。我的服务器设置为在10秒左右达到超时。
希望这有帮助!
答案 1 :(得分:1)
从node.js文档中查看此内容
script.runInNewContext([沙箱])
类似于Script.runInNewContext(注意大写'S'),但现在是一个 预编译Script对象的方法。 script.runInNewContext运行 使用sandbox作为全局对象的脚本代码并返回结果。 运行代码无权访问本地范围。沙箱是可选的。
答案 2 :(得分:0)
看看Caja。它将第三方代码转换为代码只能访问您明确授予它的对象的表单。