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

Javascript 如何使字符串安全地用作math.js表达式,javascript,math.js,Javascript,Math.js,我想让用户输入一个字符串,该字符串将在math.js中作为表达式进行计算。如何防止恶意使用此功能?您指的是哪种恶意使用 math.js有自己的表达式解析器,因此可以安全地抵御例如XSS攻击。你不能像JavaScriptseval那样插入任意的JavaScript代码,这样使用起来很危险 不过,您可以轻松地执行一个表达式,它会破坏内存和CPU,比如创建一个非常大的矩阵或其他东西(math.eval('zero(1e100,1e100)) 如果要防止这种情况发生,则必须在单独的web worker(

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

您指的是哪种恶意使用

math.js有自己的表达式解析器,因此可以安全地抵御例如XSS攻击。你不能像JavaScripts
eval
那样插入任意的JavaScript代码,这样使用起来很危险

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


如果要防止这种情况发生,则必须在单独的web worker(客户端)或child_进程(node.js服务器)中运行表达式解析器,以便在花费太长时间时终止该进程。你可以用这样的图书馆来做这个。例如,math.js()的REST API使用该库来终止运行10秒以上的表达式。

也许他的意思是“使用安全”。我有一个问题,我输入了一个等式,想用math.js检查它是否有效,但只要我使用
math.eval(等式)
math.parse(等式)
网络控制台就会显示
SyntaxError:expected end of expression(char x)
(例如,如果是“a+”)或
错误:未定义的符号…
(例如,如果是“test”)。那么如何计算公式是否正确?thxy您可以在
math.eval(eq)
周围放置一个try/catch块。如果表达式无效,将抛出一个错误,您可以捕获并处理该错误。谢谢,但我不知道在何处放置范围为的try-catch:
var-fe=function(x){var-scope={x:x};var expr=math.eval(func_方程,作用域);return expr;};
环绕
var expr=math.eval(func_方程,作用域);
,因为此方法调用
math.eval
可以引发异常。