代码之家  ›  专栏  ›  技术社区  ›  AlbertoPL

允许用户上传Python脚本以供执行

  •  12
  • AlbertoPL  · 技术社区  · 17 年前

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

    6 回复  |  直到 17 年前
        1
  •  8
  •   Colin Burnett    17 年前

    我与这个网站没有任何关系,我只是链接它,因为它试图实现你想要的东西:监禁python。该网站是 code pad .

    根据关于页面,它被运行 geordi 并用ptrace捕获所有sys调用。除了被chroot‘ed之外,它们还位于一个虚拟机上,该虚拟机上有防火墙来禁止出站连接。

    将其视为一个起点,但我必须就整个危险问题发表意见。我自己也要CYA。 :)

        2
  •  8
  •   Dave    17 年前

    使用PyPy,你可以创建一个python沙盒。沙箱是一个独立且据称安全的python环境,您可以在其中执行他们的脚本。更多信息请点击此处

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

    “理论上,不可能从这个提示中做任何坏事或读取机器上的随机文件。”

    “即使script.py来自一些随机的不受信任的来源,例如如果它是由HTTP服务器完成的,这样做也是安全的。”

        3
  •  4
  •   Walt Jones    17 年前

    除了其他保障措施外,您还可以对代码进行人工审查。假设体验的一部分是审查其他成员的解决方案,并且每个人都是python开发人员,那么在一定数量的成员投票之前,不要允许激活新代码。你的用户不会批准恶意代码。

        4
  •  3
  •   S.Lott    17 年前

    对。

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

        5
  •  1
  •   Parand    17 年前

    正如建议的那样,PyPy在服务器端可能是一个不错的选择,但我会考虑让你的python后端提供定义良好的API和数据格式,并让用户在Javascript中实现AI和逻辑,这样它就可以在他们的浏览器中运行。因此,交互过程如下:对于每一场比赛/回合等,以定义良好的格式将数据传递给浏览器,提供一个接收数据并可以实现逻辑的javascript模板,并提供可由客户端(浏览器)调用的web API以采取所需的操作。这样,您就不必担心安全性或服务器电源。

        6
  •  0
  •   geowa4    17 年前

    为用户提供广泛的API,并在上传时剥离所有其他调用(如导入语句)。此外,剥离与文件i/o有关的所有内容。

    (你可能想做多次传球,以确保你没有错过任何东西。)

    推荐文章