2009-05-04 22 views
12

我明白,让任何匿名用户上传任何类型的文件都是危险的,特别是如果它是代码的话。不过,我有一个想法让用户将自定义AI脚本上传到我的网站。我会提供模板,以便用户可以在我用Python编写的在线网络游戏中与其他AI进行竞争。我需要一种解决方案来确保用户无法通过其上传的脚本或客户端执行游戏的解决方案来危害任何其他文件或注入恶意代码。有什么建议么? (我正在寻找一个可以和我的Python脚本一起工作的解决方案)让用户上传用于执行的Python脚本

+1

你的项目听起来很酷。 – 2009-05-04 01:51:52

+0

非常感谢大家的反馈 – AlbertoPL 2009-05-04 03:55:41

+0

好项目!!!! – 2009-07-14 19:15:07

回答

0

为用户提供了广泛的API并在上载时除去所有其他调用(例如导入语句)。此外,剥离与文件I/O有关的所有内容。

(你可能想要做多遍,以确保您没有错过任何东西。)

3

是的。

允许他们脚本他们的客户端,而不是你的服务器。

8

我与这个网站没有任何关联,我只是把它连接起来,因为它试图实现你所追求的东西:jailing of python。该网站是code pad

根据about页面,它在geordi下运行,并使用ptrace捕获所有sys调用。除了chroot以外,他们还在一台安装了防火墙的虚拟机上禁止出站连接。

想一想它的出发点,但我必须在整个危险事件上做出贡献。自己得CYA。 :)

8

使用PyPy你可以创建一个python沙箱。沙箱是一个单独的,应该是安全的python环境,您可以在其中执行脚本。这里更多信息

http://codespeak.net/pypy/dist/pypy/doc/sandbox.html

“理论上这是不可能做什么坏事或从该提示阅读机器上的随机文件。”

“即使script.py来自某个随机不受信任的源(例如,如果它由HTTP服务器完成),也可以安全地执行此操作。”

4

除了其他安全措施外,您还可以合并人工审查代码。假设部分经验正在审核其他成员的解决方案,并且每个人都是Python开发人员,那么在有一定数量的成员为其投票之前,不要让新代码被激活。您的用户不会批准恶意代码。

1

PyPy在服务器端可能是一个不错的选择,但我会考虑让你的python后端提供定义好的API和数据格式,并让用户在Javascript中实现AI和逻辑,以便它可以运行他们的浏览器因此,交互如下所示:对于每个match/turn/etc,以明确定义的格式将数据传递给浏览器,提供一个接收数据并可实现逻辑的JavaScript模板,并提供可由客户端调用的Web API (浏览器)采取所需的操作。这样您就不必担心安全性或服务器功耗。