gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:06:12 26 4
gpt4 key购买 nike

所以我想做的是将 javascript 代码作为用户的输入并向他返回结果。现在我正在执行用户提交的代码,仅使用 eval (带有一些安全检查)。但我知道这是非常不可靠的。所以我想要实现的是在沙箱环境中安全地运行它并将结果返回给用户。例如

输入:

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

输出:

[2,4,6]

我尝试在 Node 中使用 vm,但我不太明白如何从中获取最终结果。

最佳答案

I tried using vm in node but I don't really understand how to get the final result from it.

很多vm module函数,例如 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() 的描述中给出了捕获结果的示例。

关于javascript - 如何在node的沙箱环境中执行用户提交的javascript代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36820156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com