javascript - 评估代码的正确方法

标签 javascript function eval evaluation expression-evaluation

所以我正在构建一个小型应用程序,您可以在其中评估一些 JavaScript 代码片段,但我遇到了一个巨大的“道德”问题:

最初我想使用eval ,但我发现了它的危险,所以我很快就寻找替代方案。

我能找到的最接近的东西是函数构造函数,但一方面它不评估简单的代码片段,例如 2 + 3 ,因为它需要 return声明,而eval不会,而且它在安全性方面也并不比 eval 好多少。 (至少从我收集到的信息来看)。

还有其他方法可以像代码一样计算字符串吗?

最佳答案

如果您想评估 JavaScript 代码,请使用 eval。危险吗?是的。但这只是因为评估 JavaScript 是危险的。没有安全的方法来评估 JavaScript。如果您想评估 JavaScript,请使用 eval

采取一切可能的安全预防措施。如果不了解您想要支持的内容以及计划如何实现它的更多详细信息,就不可能知道您应该采取哪些安全预防措施。

这可能有用:

Is It Possible to Sandbox JavaScript Running In the Browser?

https://github.com/google/caja

关于javascript - 评估代码的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44659731/

相关文章:

python - 在 Python 函数中灵活拆分输入字符串

python - sin(y) 导致 "can' t 将表达式转换为 float"错误

javascript - IndexedDB:在特定条目上打开游标而不进行迭代

javascript - Bootstrap 开关事件处理程序不工作

样式不起作用的 Javascript 函数参数

matlab - 如何对 Matlab 语言进行写保护?

javascript - eval在nodejs下不工作

matlab - 为什么 `eval` 比 `str2func` 从字符串评估函数更差?

javascript - JQuery 脚本循环错误

javascript - 水平毛刺线错误