如何创建新的Buffer类?

时间:2015-11-12 14:50:02

标签: javascript node.js

好吧,不完全确定如何说出来,但我会尽我所能。

我一直在尝试使用node的新vm模块,我想为vm中运行的代码启用Buffer支持。

以下是我使用的初始代码:

let vm = require('vm');
let someCode = '... some unsafe code ...';

let result = vm.runInNewContext(
    someCode,
    { Buffer: Buffer }
);

但是,正如我很快发现的那样,这将返回节点进程的Buffer类,因此如果有人要修改vm中的Buffer.prototype,这也会改变vm之外的Buffer。

因此,在查看the docs之后,我尝试将沙箱对象更改为:

{ Buffer: require('buffer').Buffer }

经过一番检查后,我发现这也不能正常工作,因为需要以某种方式返回同一个对象:

let b = require('buffer').Buffer;
console.log(b === Buffer); // This becomes true

是否可以使用vm创建新的Buffer类,或者我是否需要以某种奇特的方式使用child_process进一步保护?

0 个答案:

没有答案