繁体   English   中英

节点JS-在新流程中执行代码字符串

[英]Node JS - executing a string of code in a new process

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

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

谢谢!!

  1. 您提供给vm.runInNewContext()sandbox参数是可用于沙盒代码的对象。 从内部放任何您需要使用的东西。 在文档中进行了描述:

http://nodejs.org/api/vm.html#vm_vm_runinnewcontext_code_sandbox_filename

  1. 但是正如文档所述,您最好将不受信任的代码放入一个单独的过程中。 否则,代码可能会简单地与while(true);挂在一起while(true); 正如您自己提到的那样, chlid_process.fork()应该用于此目的。 文档在这里:

http://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options

但是在这种情况下,您不能将对象转移到新进程,而应该使用消息传递。

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

https://github.com/asvd/jailed

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM