如何使字符串安全地用作math.js表达式
How to make a string safe to use as a math.js expression
我想让用户输入一个字符串,该字符串将在math.js中作为表达式进行求值。如何防止恶意使用此功能?
你的意思是什么恶意使用?
math.js有自己的表达式解析器,因此可以安全地抵御例如XSS攻击。您不能像使用JavaScripts eval
那样只插入任意的JavaScript代码,这在使用时可能很危险。
不过,你可以很容易地执行一个表达式,它会耗尽内存和CPU,比如创建一个非常大的矩阵或其他东西(math.eval('zeros(1e100, 1e100)')
)。
如果你想防止这种情况发生,你必须在一个单独的web工作程序(客户端)或child_process(node.js服务器)中运行表达式解析器,这样当它花费太长时间时,你就可以终止这个进程。你可以使用workerpool这样的库来实现这一点。例如,math.js的REST API使用此库(http://api.mathjs.org)以终止运行超过10秒的表达式。
相关文章:
- JS:如何在使用 Math.random() 时排除一系列值
- 如何使字符串安全地用作math.js表达式
- AngularJS和JS Math.max.apply()不能一起工作
- 将@math和@size在灰尘中结合.js
- 谷歌地图API使用Math.random获取随机位置 - JS
- 如何使用 Math.js 解析器测试 MySQL 语法
- 如何让用户输入Math.js
- math.js中的变量名和限制运算符
- JS Math.random没有't得到-9-
- 在phaser.js实体中显示Math
- Three.js - PlaneGeometry from Math.Plane
- JS- Math.atan(y/x) with x==0
- .apply(Math, arrayName)在JS中是如何工作的?
- 如何在three .js中使用math/sphere.js绘制球体
- 使用Math.js计算上栅栏
- JS + math:计算子字符串的排列或组合
- 在没有math.js的情况下使用虚数
- @Math不在dust.js中渲染
- 如何包含和使用math.js
- 在ember-cli中导入依赖项(例如Import math.js)