我使用nodejs作为客户端浏览器和服务器之间的中间人来处理所有请求。我正在尝试使用nodejs作为过滤工具,并突出显示(如果不是)所有恶意脚本。但我意识到nodejs允许脚本以当前环境特权运行。因此,我决定通过安装沙箱(npm install sandbox
或git clone git://github.com/gf3/sandbox.git
)在新的上下文中运行它。
但是,当我运行节点时,我有以下错误:
TypeError:无法调用方法 \'runInNewContext \'of undefined'
任何想法?
答案 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}}。