如何在节点的沙箱环境中执行用户提交的javascript代码?

Prashant Agrawal

因此,我想做的就是将javascript代码作为用户的输入,然后将结果返回给他。现在,我仅使用eval(并进行了一些安全检查)来执行用户提交的代码。但是我知道这是非常不可靠的。因此,我想要实现的是在沙盒环境中安全运行此程序并将结果返回给用户。例如

输入:

var a =[1,2,3];
a.map(n => n*2);

输出:

[2,4,6]

我尝试在节点中使用vm,但我不太了解如何从中获取最终结果。

乔纳森·洛诺夫斯基(Jonathan Lonowski)

我尝试在节点中使用vm,但我不太了解如何从中获取最终结果。

像一样许多vm模块函数vm.runInNewContext()都将返回字符串中最后一个语句的结果,类似于eval()

var vm = require('vm');
var script = 'var a = [1, 2, 3]; a.map(n => n * 2);';

var sandbox = {};
var result = vm.runInNewContext(script, sandbox);

console.log(sandbox); // { a: [1, 2, 3] }
console.log(result);  // [2, 4, 6]

在以下说明中给出了捕获结果的示例 vm.runInThisContext()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

安全地沙箱并执行用户提交的JavaScript?

如何使我的用户脚本也在隔离的沙箱和unsafeWindow中执行代码?

如何在node.js沙箱中安全地运行用户提交的脚本?

如何在 Javascript 中执行异步代码

如何在puppeteer中执行JavaScript代码

如何在JavaScript中执行php代码

Windows 10沙箱-如何在本地PC的沙箱环境中访问文件?

在 Azure 函数中执行任意 Python 代码(用户提交)

C程序如何在Linux环境中同时执行其他操作的同时轮询用户输入?

如何在chroot环境中执行for循环

如何在Javascript中执行以base64编码的代码

如何在javascript确认框中执行代码

如何在Golang请求中执行JavaScript异步代码

如何在EJS模板中执行JavaScript代码?

如何在C#(.NET)中执行Javascript代码

如何在 Azure DevOps 中跟踪特定用户的代码提交?

JavaScript如何在页面上执行代码

如何在JavaScript中的x周期内执行循环等待代码执行?

如何在受限制的沙箱中运行Java代码(无网络,文件系统访问权限)

如何在本地环境中测试节点Heroku任务

如何在节点红色中设置环境变量?

如何在 Ubuntu 环境中安装特定版本的节点

如何在Xcode中执行Swift代码

如何在 JavaScript 中显示用户输入(由一些提交组成)?

如何在 jasmine 中测试沙箱类

如何在Windows沙箱中制作快照?

通过文本字段提交表单时如何在Rails中运行javascript代码?

我们如何在WSO2自定义处理程序中确定请求环境(沙箱/生产)?

在调试时或从JavaScript代码中如何在DOM节点上查找事件侦听器?