Ada*_*dam 5 javascript security trusted-vs-untrusted
我想使用node.js(或其他SSJS解决方案),运行我自己的代码+内部编写的代码(不可信).
任何分离和保护我自己的代码的方法?我可以限制不受信任的代码的模块和系统效果(限制访问文件,非HTTP端口等)?
你可以看看这个项目,它看起来很有前途:
http://github.com/gf3/node-sandbox
就我个人而言,我不会使用 Node 来执行任意 SSJS。您可能不会喜欢这个解决方案,但它对我来说效果良好大约一年了:
有一个可用的Spidermonkey API 的 Perl 实现(Spidermonkey 是 Firefox 的 JS 引擎)。我在一些 CGI 的帮助下将其连接起来。您可以在其中准确指定要公开的函数(当然,它是用 Perl...blech 编写的)并执行您喜欢的任何代码。由于整个设置完全沙盒化,因此不存在漏洞风险。它不模拟 DOM。
我在我的服务器上实现这一点的方法(为了防止滥用)是颁发令牌,通过另一台服务器上的 REST API 授予一次性访问权限。这是一个简单的 HMAC 实现,其中包含一个时间戳来强制令牌的合法性。当 Perl 脚本收到请求时,它会验证令牌并处理脚本(该脚本应该只是 POST 请求的一部分)。然后 Perl 脚本只写入结果。我的服务器设置为在 10 秒左右超时。
希望这可以帮助!