为数学创建在线学习材料,我希望允许我的网站用户定义(数学)函数,根据定义,这些函数是无副作用的。实现这一目标的最简单方法是执行以下操作
// ... 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*x
,user_function
将包含一个计算其参数平方的函数。
现在,这将打开我的页面以跨站点脚本和恶意代码。
除了自己编写表达式解析器之外,还有什么方法可以避免这种情况吗?换句话说,我想允许在定义良好的上下文中执行函数,例如,没有函数访问全局变量。