我正在尝试为各种语言构建在线编译器。这是我想要做的事情的片段。
const util = require('util');
const exec = util.promisify(require('child_process').exec);
exec('node node_temp.js').then(result => {
console.log(result);
})
.catch(err => {
console.log(err);
});
因此,对于JavaScript(节点)。用户将键入一些代码并通过POST请求发送,然后代码将被复制到node_temp.js
然后执行。
现在用户可能会使用fs
或任何其他方法删除系统中的所有文件。如何阻止exec()
函数修改任何系统文件。
有些答案建议使用vm
或vm2
。我使用了两者,虽然它创建了一个新的沙箱,exec
命令仍然可以访问操作本地文件。