我想使用 node.js(或其他 SSJS 解决方案),在内部运行我自己的代码 + 外部编写的代码(不受信任)。
有什么方法可以分离和保护我自己的代码吗?我可以限制不受信任代码的模块和系统影响(限制对文件、非 HTTP 端口等的访问)吗?
最佳答案
你可以看看这个项目,看起来很有前途:
http://github.com/gf3/node-sandbox
就个人而言,我不使用 Node 来执行任意 SSJS。您可能不会喜欢这个解决方案,但它对我来说效果很好大约一年:
Spidermonkey 的 API 有一个 Perl 实现(Spidermonkey 是 Firefox 的 JS 引擎)that's available .我在一些 CGI 的帮助下将其连接起来。您可以在其中准确指定您想要公开的功能(当然,它在 Perl 中...blech)并执行您喜欢的任何代码。没有漏洞风险,因为整个设置是完全沙盒化的。它不模拟 DOM。
我在我的服务器上实现它(以防止滥用)的方式是颁发 token ,通过不同服务器上的 REST API 授予一次性访问权限。这是一个简单的 HMAC 实现,其中包含一个时间戳以强制执行 token 的合法性。当 Perl 脚本收到请求时,它会验证 token 并处理脚本(脚本应该只是 POST 请求的一部分)。然后 Perl 脚本只写入结果。我的服务器设置为在大约 10 秒时超时。
希望这对您有所帮助!
关于javascript - 针对未经验证的代码保护 SSJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3312958/