无副作用的功能

时间:2014-04-17 17:09:41

标签: javascript eval

为数学创建在线学习材料,我希望允许我的网站用户定义(数学)函数,根据定义,这些函数是无副作用的。实现这一目标的最简单方法是执行以下操作

// ... get string entered by user and store it in variable user_code
// now build function
var user_function = eval ("(function (x) { return (" + user_code + "); })");

如果用户输入x*xuser_function将包含一个计算其参数平方的函数。

现在,这将打开我的页面以跨站点脚本和恶意代码。

除了自己编写表达式解析器之外,还有什么方法可以避免这种情况吗?换句话说,我想允许在定义良好的上下文中执行函数,例如,没有函数访问全局变量。

1 个答案:

答案 0 :(得分:1)

嗯,javascript已经存在很多好的表达式解析器,为什么要重新发明轮子?

我确信使用内置表达式解析器的math.js之类的内容会更容易,更安全......