javascript - 如何避免在用户定义函数中使用 JavaScript eval()

标签 javascript json eval

我正在尝试制作一个通用的桌面 RPG 助手网络应用程序。它必须是通用的,因为威世智非常保护他们的版权。因此,为了避免停止,系统必须能够加载任意规则。也就是说,我和我的好友(以及大多数其他用户)将使用它进行 D&D。

在 D&D 中,修饰符基于 Angular 色的统计数据。要获得修正值,您需要获取统计数据,减去 10,除以 2,然后向下舍入。

function getModifier(statValue) {
    return Math.floor((statValue - 10) / 2);
}

我的应用程序将能够从 .json 文件加载游戏规则。我希望能够使这个修饰符函数可由用户定义。最简单的方法是仅使用 eval() 他们在 .json 文件中提供的任何内容,但由于安全问题,显然这是一个糟糕的主意。

不幸的是,我想不出一种简单的方法来安全地解决这个问题。显然我可以编写自己的解析器,但这比我想要的/目前能够做到的要复杂。

想法?

最佳答案

我快速进行了谷歌搜索,发现了两个选项 - http://mathjs.orghttp://jsep.from.so

顺便说一句。编写自己的解析器并不那么困难。您也许可以用不到 100 行代码编写一个足以满足您的目的的代码

关于javascript - 如何避免在用户定义函数中使用 JavaScript eval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30036442/

相关文章:

Python:使用 sympy.sympify 对数学函数执行安全 eval()

php - 在 PHP 中使用 Eval() 动态创建函数

javascript - Google map 标记的文本标签

javascript - 如何将 unicode JavaScript 字符串转换为字节数组?

javascript - 使用 Firebase 转换匿名用户 : Cannot read property 'getAuthResponse' of undefined

Python 转换 yaml 为 json

json - 对于 JSON 解析器来说,逗号和冒号都是多余的吗?

javascript - 当数据表输入来自服务器的 JSON 数据时更改 Google Chart 条形颜色

Javascript : Eval external script within defined namespace

javascript - 在 keyup/click 上查找表单的 ID 和值