我的页面上有一个表单字段,如果用户在其中键入一个简单的数学方程式,我想用解决方案替换该值。因此,如果用户1 + 2
在字段中输入并点击,enter我将输入值替换为3
.
目前我只评估与这个正则表达式匹配的方程:
/^[\d. \+/\*-]+$/
也就是说,如果整个字符串由数字、空格、加号、减号、乘号或除号字符组成。
然后我像这样评估值:
(new Function('try {var a = ' + val + '; return a;} catch(e) {return -1;}'))()
此表单字段可以由查询字符串参数预先填充,客户端将尝试执行它。又名潜在的攻击将是 mysite.com?inputVal=cookieStealingProgram。我不希望用户能够链接到利用代码。
我想在正则表达式中添加括号和指数,以便用户可以输入(1 + 2) / 3 ^ 5
例如。虽然我相当确定仅使用数字和运算符是不可能的,但我不确定带括号的情况。
我知道只使用字符组合! [ ] + ( )
就可以创建一个完全可执行的 javascript 程序。我还尝试在 Google 中搜索“javascript 漏洞利用字符”和各种组合,但这并不是一件容易找到的事情。
我的具体问题是0-9 . + - / * ( ) ^
可以仅使用(允许空格字符)编写任意 javascript 程序吗?由于它有点开放式,如果几天后无法提供示例,我可以结束这个问题。
我没有实现也没有制作解析器来做到这一点。这与问题无关