VM内部有限的require()

时间:2016-07-23 02:14:19

标签: node.js

有没有办法在文件中提出有限的要求?VM程序也需要在VM内运行吗?

将函数传递给读取文件的脚本然后返回代码的VM实例是否安全。

我的情况是,我需要一个沙盒文件,它可以通过要求所有其他文件来启动环境。这不应该通过在上下文中传递它们来完成,因为在文件需要时必须要求这些文件,因为这些所需的文件可能会更改。 所需的文件并不真正受信任,因此正常的require()很危险。因为只有代码必须弄乱的是。

所以:init.js调用files / core1.js,files / core2.js和files / whatever_it_wants.js

我用的是什么:

var sandbox = {
 fs: vfs,
 write: console.log,
 files: f,
 exit: process.exit
}
var context = new vm.createContext(sandbox);
var script = new vm.Script(fs.readFileSync("./e/master.js"),{timeout: 10000});
script.runInContext(context);

master.js需要加载不太可信的文件,包含文件(包含所有可用文件)和虚拟文件系统,以便进行FS操作,然后写/退出以完成所需的操作。

0 个答案:

没有答案