据我所知,让任何匿名用户上传任何类型的文件都是危险的,特别是如果它的代码。但是,我有一个想法让用户上传自定义AI脚本到我的网站。我将提供模板,以便用户可以在我用Python编写的在线网络游戏中与其他AI竞争。我要么需要一个解决方案来确保用户不会破坏任何其他文件或通过他们上传的脚本或客户端执行游戏的解决方案注入恶意代码。有什么建议? (我正在寻找一种适用于我的Python脚本的解决方案)
答案 0 :(得分:8)
我与这个网站没有任何关联,我只是链接它,因为它试图实现你所获得的:蟒蛇的监狱。该网站为code pad。
根据about页面,它在geordi下运行,并使用ptrace捕获所有sys调用。除了chroot之外,他们还在虚拟机上安装防火墙以禁止出站连接。
认为这是一个起点,但我必须在整个危险的事情上插话。自己要CYA。 :)
答案 1 :(得分:8)
使用PyPy可以创建一个python沙箱。沙箱是一个独立的,应该是安全的python环境,您可以在其中执行脚本。更多信息在这里
http://codespeak.net/pypy/dist/pypy/doc/sandbox.html
“从理论上讲,不可能做任何不好的事情或从这个提示中读取机器上的随机文件。”
“即使script.py来自某个随机不受信任的来源,也是安全的,例如,如果它是由HTTP服务器完成的。”
答案 2 :(得分:4)
除了其他安全措施外,您还可以合并人工审查代码。假设部分经验是审查其他成员的解决方案,并且每个人都是python开发人员,在一定数量的成员投票之前,不要允许激活新代码。您的用户不会批准恶意代码。
答案 3 :(得分:3)
是
允许他们编写客户端脚本,而不是服务器脚本。
答案 4 :(得分:1)
答案 5 :(得分:0)
为用户提供广泛的API,并在上传时删除所有其他调用(例如import语句)。另外,删除与文件i / o有关的所有内容。
(你可能想要多次通过,以确保你没有遗漏任何东西。)