评估来自“不可信”用户的算法

2024-04-25 21:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在玩弄一个想法,我想不出一个方法来解决这个问题,在后端没有令人生畏的安全问题。你知道吗

假设我想让用户有机会通过Web服务创建简单的算法,并在小列表上测试这些算法,例如range(0, 5)然后通过另一个Web服务、模板或电子邮件报告结果,其实并不重要,困扰我的是评估。你知道吗

使用python:

class Algorithm(whatever):
    function = whatever.CharField(max_length=75)

用户可以输入以下内容:

'f(x)=x+(x/5)**0.75'

当然,我可以使用eval,剥离除“x”以外的任何内置项、字符串等,但这仍然可能是不幸的做法。你知道吗

我唯一能想到的就是将任何评估功能移动到JavaScript前端。


Tags: 方法用户算法模板web列表报告range
1条回答
网友
1楼 · 发布于 2024-04-25 21:18:31

eval()是邪恶的,在后端这样做是非常危险的。但是,可以使用python sandbox安全地完成。但如果沙盒在哪里失败,你会得到拥有。这不是一个非常“纵深防御”的方法。你知道吗

更好的方法是评估客户端的有效负载。。。不过,这是跨站点脚本(XSS)。防止攻击者利用此问题的一种方法是在客户端设置一个事件处理程序,在按下按钮时对窗体进行计算。如果攻击者可以构建执行JavaScript的GET或POST请求,则可以利用XSS漏洞进行攻击。还要确保设置x-frame-options: deny以防止clickjacking。你知道吗

相关问题 更多 >