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

标签 javascript node.js process sandbox

假设我有一个想要执行的 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

  • 但正如文档所说,您最好将不受信任的代码放入单独的进程中。否则,代码可能会因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

    关于javascript - Node JS - 在新进程中执行一串代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272956/

    相关文章:

    javascript - 将一个表的数据复制到另一个表时切换按钮

    javascript - window.print() 在每一页上重复模态

    node.js - NodeJS/express 4 : Can't set headers after they are sent while writing cookie

    Tomcat 处理时间

    javascript - 将文字设置为 google+ 分享按钮

    javascript - UIKIT上传-服务器端NodeJS

    javascript - 使用javascript访问jade元素

    node.js - Docker nodejs build 在本地工作但卡在服务器上

    c# Process.Start() 没有返回正确的响应

    Java 在进程中执行某事