javascript - 如何使字符串安全地用作 math.js 表达式

标签 javascript math.js

我想让用户输入一个字符串,该字符串将作为表达式在 math.js 中进行计算。如何防止恶意使用此功能?

最佳答案

您指的是哪种恶意使用?

math.js 有它自己的表达式解析器,所以它可以安全地抵御 XSS 攻击。您不能像使用 JavaScripts eval 那样随意输入任意 JavaScript 代码,使用它可能很危险。

不过,您可以轻松地执行一个会耗尽内存和 CPU 的表达式,例如创建一个非常大的矩阵或其他东西 (math.eval('zeros(1e100, 1e100)')) .

如果你想防止这种情况发生,你将不得不在一个单独的网络 worker (客户端)或 child_process(node.js 服务器)中运行表达式解析器,这样你就可以在它花费太长时间时终止进程。您可以使用像 workerpool 这样的库为了这。例如,math.js 的 REST API ( http://api.mathjs.org ) 使用此库来终止运行超过 10 秒的表达式。

关于javascript - 如何使字符串安全地用作 math.js 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28498357/

相关文章:

javascript - jQuery 在单击按钮或 onchange 下拉菜单上运行相同的函数

javascript - 强制 Protractor 的 onPrepare 等待异步 http 请求

javascript - 为什么 math.js 的 math.simplify ("1e-10").toString() 返回 0?

javascript - Mandelbrot 设置程序在 JS fiddle 中不起作用

javascript - 原型(prototype)继承共享属性和方法

javascript - 通过 Blogger 标签更改颜色

javascript - JavaScript 中浮点常量的高效编码

javascript - Javascript INFINITY 属性

javascript - TypeError : this. path.replace 不是新 FirestoreDelete 的函数