沙箱中的Nodejs

时间:2011-04-21 19:41:07

标签: javascript node.js sandbox

我使用nodejs作为客户端浏览器和服务器之间的中间人来处理所有请求。我正在尝试使用nodejs作为过滤工具,并突出显示(如果不是)所有恶意脚本。但我意识到nodejs允许脚本以当前环境特权运行。因此,我决定通过安装沙箱(npm install sandboxgit clone git://github.com/gf3/sandbox.git)在新的上下文中运行它。 但是,当我运行节点时,我有以下错误:

  

TypeError:无法调用方法   \'runInNewContext \'of undefined'

任何想法?

2 个答案:

答案 0 :(得分:3)

您是否查看了node 0.4.6的inbuild沙箱功能。

var localVar = 123,
    usingscript, evaled,
    vm = require('vm');

usingscript = vm.runInThisContext('localVar = 1;',
  'myfile.vm');
console.log('localVar: ' + localVar + ', usingscript: ' +
  usingscript);
evaled = eval('localVar = 1;');
console.log('localVar: ' + localVar + ', evaled: ' +
  evaled);

// localVar: 123, usingscript: 1
// localVar: 1, evaled: 1

答案 1 :(得分:0)

我从未使用过它,但显然有一个npm模块:sandbox

  

node.js的漂亮javascript沙箱

     

一些功能

     
      
  • 可用于执行不受信任的代码。
  •   
  • 支持超时(例如防止无限循环)
  •   
  • 支持内存错误(和内存错误)
  •   
  • 优雅处理错误
  •   
  • 受限制的代码(无法访问node.js方法)
  •   
  • 支持console.log和打印实用程序方法
  •   
  • 支持使用沙盒代码进行进程间消息传递
  •   

referenced bug report mentioned by broofa标记为{{3}}在另一个使用runThisInContext的答案的评论中不安全{{3}}。