3

我正在评估将 NodeJs 用于共享编程平台的过程。

用户应该能够提交代码并在服务器上运行它。为了给他们最好的基础,应该提供几个 NodeJs 模块。

出于安全原因,应该对进程进行 chroot 以禁止访问系统资源。

最好的方法似乎是使用 child_processes,尤其是fork()函数。

为了进一步的安全性,一些 NodeJs 模块也应该被禁用,比如启动额外的子进程。

如何为孩子禁用这些模块?我什至无法找到默认禁用某些编译选项,

4

1 回答 1

3

基本上,您正在寻找的是在受信任的环境中运行不受信任的代码。我猜这里的关键是沙盒。

请注意,有多种解决方案可用于在 Node.js 中创建和管理沙箱,其中包括:

  • gf3/sandbox,这是一个漂亮的 node.js javascript 沙箱
  • hflw/node-sandbox,这是一个高级沙箱库,允许沙箱和父进程之间的通信。

我对他们中的任何一个都没有任何实际经验,但我想这对你来说是朝着正确方向迈出的一步。也许您想在这里与他们分享您的经验?我认为这会很棒:-)

希望这可以帮助。

于 2013-01-05T23:25:27.520 回答