沙箱中的 Nodejs

发布于 2024-11-03 02:04:33 字数 332 浏览 0 评论 0原文

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

类型错误:无法调用方法 未定义的“runInNewContext”

有人有什么想法吗?

I'm using nodejs as a middle-man between a client browser and the server to handle all the requests. I'm trying to use nodejs as a filter tool and highlight (if not) all malicious scripts. But I realize that nodejs let the script to run with the current environment privilege. So, I decide to run it in a new context by installing sandbox (npm install sandbox or git clone git://github.com/gf3/sandbox.git).
However when I run node I have this following error:

TypeError: Cannot call method
\'runInNewContext\' of undefined'

Any ideas anyone?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神经暖 2024-11-10 02:04:33

您是否了解过 node 0.4.6 的内置沙箱功能。

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

Have you looked at the inbuild sandbox abilities of node 0.4.6.

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
棒棒糖 2024-11-10 02:04:33

我从未使用过它,但显然有一个 npm 模块:<代码>沙箱

一个漂亮的 Node.js javascript 沙箱

一些功能

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

这是 runThisInContext< 上的错误报告引用 /code> 标记它不安全 broofa 在另一个答案的评论中提到使用runThisInContext

I've never used it, but apparently there's an npm module for this: sandbox:

A nifty javascript sandbox for node.js

Some features

  • Can be used to execute untrusted code.
  • Support for timeouts (e.g. prevent infinite loops)
  • Support for memory errors (and memory errors)
  • Handles errors gracefully
  • Restricted code (cannot access node.js methods)
  • Supports console.log and print utility methods
  • Supports interprocess messaging with the sandboxed code

This is referenced by the bug report on runThisInContext flagging up that it is not secure mentioned by broofa in a comment on another answer saying to use runThisInContext.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文