【发布时间】:2016-10-30 09:12:53
【问题描述】:
我在开发使用 vm 的应用时遇到了一些问题:
无限while (true) {}循环内的外部方法调用不会超时:
var context = {
externalMethod: function(str) {console.log(str)}
};
vm.runInNewContext("while (true) {externalMethod('test')}", context, {}, 100);
上面的代码会无限运行,即使在 100 毫秒超时之后也是如此;
vm.runInNewContext("for (;;) {}", {}, {}, 100)
还有这个..即使没有运行外部方法,它也不会超时。
最后一个问题:在vm2 内部调用外部方法运行不受信任的代码有多安全:
var context = {
method: (str) => {
createMessage("id", str) // some external (non-sandbox) method that sends an authenticated POST request to a chat app...
}
}
那么,是否可以使用该方法检索外部global 或this?
【问题讨论】:
标签: javascript node.js virtual-machine