Node JS - 在新进程中执行一串代码

时间:2014-08-12 19:54:16

标签: javascript node.js process sandbox

假设我有一串我想要执行的NodeJS代码,但它不受信任,因此我必须使用vm.runInNewContext(stringOfCode)对其进行沙箱化。出现了两个问题:

  1. 如果我想在执行的代码中使用一些对象,那蜜蜂怎么可能实现?
  2. 假设我想将代码的执行时间限制为5秒,我该怎么做?
  3. 如何在新进程上运行此代码?我现在可以使用child_process.fork(),但我到底该怎么做?
  4. 谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 您向sandbox提供的vm.runInNewContext()参数是沙盒代码可用的对象。从里面放任何你需要使用的东西。它在文档中描述:
  2. http://nodejs.org/api/vm.html#vm_vm_runinnewcontext_code_sandbox_filename

    1. 但正如文档所述,您最好将不受信任的代码放入单独的进程中。否则,代码可能会挂起while(true);。正如你自己提到的那样,chlid_process.fork() shoudl就是用来做的。文档在这里:
    2. http://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options

      但是在这种情况下,您无法将对象传输到新进程,而是应该使用消息传递。

      最后有一个库可以简化上面的所有内容:

      https://github.com/asvd/jailed