我只是在玩弄一个想法,我想不出一种方法可以在后端解决这个问题而不会出现令人生畏的安全问题。
假设我想让用户有机会通过 web 服务创建简单的算法并在小列表中测试这些算法,例如,range(0, 5)
然后通过另一个 web 服务、模板或电子邮件报告结果,这并不重要,这是评估打扰我。
使用蟒蛇:
class Algorithm(whatever):
function = whatever.CharField(max_length=75)
用户可能会输入如下内容:
'f(x)=x+(x/5)**0.75'
当然,我可以使用eval
,剥离任何内置插件,除“x”之外的字符串等,但这仍然可能是不幸的做法。
我唯一能想到的是将任何评估功能移至 JavaScript 前端。