我正在创建一个在 django 上运行的 corewars 类型的应用程序,它允许用户上传一些 python 代码来控制他们的角色。现在,我知道真正的答案是,只要我从不受信任的用户那里获取代码输入,我就会存在安全漏洞。我只是想尽可能地降低风险。以下是一些我突然想到的:
__import__(我可能还会做一些 ast 扫描以确保没有任何导入语句)打开文件输入原始输入
还有其他我遗漏的吗?
请您参考如下方法:
在 http://wiki.python.org/moin/SandboxedPython 上有很多关于通常如何限制 Python 的答案。 .当我前段时间查看它时,Zope RestrictedPython 看起来是最好的解决方案,它使用白名单系统。您仍然需要注意自己的代码,以免暴露任何安全漏洞,但这似乎是目前最好的系统。
