有没有办法在文件中提出有限的要求?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操作,然后写/退出以完成所需的操作。