我正在评估将 NodeJs 用于共享编程平台的过程。
用户应该能够提交代码并在服务器上运行它。为了给他们最好的基础,应该提供几个 NodeJs 模块。
出于安全原因,应该对进程进行 chroot 以禁止访问系统资源。
最好的方法似乎是使用 child_processes,尤其是fork()函数。
为了进一步的安全性,一些 NodeJs 模块也应该被禁用,比如启动额外的子进程。
如何为孩子禁用这些模块?我什至无法找到默认禁用某些编译选项,
基本上,您正在寻找的是在受信任的环境中运行不受信任的代码。我猜这里的关键是沙盒。
请注意,有多种解决方案可用于在 Node.js 中创建和管理沙箱,其中包括:
我对他们中的任何一个都没有任何实际经验,但我想这对你来说是朝着正确方向迈出的一步。也许您想在这里与他们分享您的经验?我认为这会很棒:-)
希望这可以帮助。