gpt4 book ai didi

javascript - 如何评估 javascript 字符串并从中调用函数(无窗口)

转载 作者:行者123 更新时间:2023-11-30 15:28:44 24 4
gpt4 key购买 nike

我正在开发一种工具来帮助教授编程,在某个时候,我让客户将 javascript 作为字符串发送到服务器。我总是会从他们的代码中调用函数 A 和 B,但我不确定如何限制他们的访问?

我现在在做什么:

eval(code);
userFunctionA = eval("getA");
userFunctionB = eval("getB");

var result = userFunctionA(param1, param2);

不幸的是,通过使用 eval,他们可以访问我所有的全局变量和其他函数,我该如何限制他们的访问?

这是我找到的最好的引用资料,但他们非常关注“窗口”,并且由于我的是 Node 服务器,所以我没有窗口,我无法使用建议的 iFrame 或 worker:Is it possible to restrict the scope of a javascript function?

注意:我正在寻找一种不需要我在阅读它们之前将它们的代码字符串分解为函数的解决方案,因为这会妨碍学习,例如:

function a() {fdafs}
b = a();
a = function (x){fsadg}

最佳答案

如果您将 eval() 代码作为自己的模块,那么您将获得 module wrapper 的好处当 require 时,它会绕过每个模块。模块包装器将全局范围限制在模块内。基本上,它是一种命名空间形式。

所以如果你只是做

评估器.js

module.exports = function(funcToCall) {
eval(funcToCall);
}

应用程序.js

const evaluator = require('evaluator');

evaluator(code);

关于javascript - 如何评估 javascript 字符串并从中调用函数(无窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42564842/

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