【问题标题】:Letting users upload Python scripts for execution让用户上传 Python 脚本以执行
【发布时间】:2010-10-23 12:50:58
【问题描述】:

我知道,让任何匿名用户上传任何类型的文件通常都是危险的,尤其是在它是代码的情况下。但是,我有一个想法,让用户将自定义 AI 脚本上传到我的网站。我将提供模板,以便用户可以在我用 Python 编写的在线网络游戏中与其他 AI 竞争。我要么需要一个解决方案来确保用户不能破坏任何其他文件或通过他们上传的脚本注入恶意代码,要么需要一个用于客户端执行游戏的解决方案。有什么建议? (我正在寻找适用于我的 Python 脚本的解决方案)

【问题讨论】:

  • 非常感谢大家的反馈

标签: python cgi


【解决方案1】:

是的。

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

【讨论】:

    【解决方案2】:

    我与该站点没有任何关联,我只是链接它,因为它试图实现您所追求的目标:监禁 python。该网站是code pad

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

    将其视为一个起点,但我必须对整个危险事件发表意见。我自己得CYA。 :)

    【讨论】:

      【解决方案3】:

      使用 PyPy,您可以创建一个 python 沙箱。沙箱是一个独立的、据称是安全的 Python 环境,您可以在其中执行它们的脚本。更多信息在这里

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

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

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

      【讨论】:

      • 有人用过吗?每次我检查 pypy 时,它总是在开发中。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        按照建议,PyPy 可能是服务器端的一个不错的选择,但我会考虑让您的 python 后端提供定义良好的 API 和数据格式,并让用户在 Javascript 中实现 AI 和逻辑,以便它可以在他们的浏览器。所以交互看起来像:对于每个匹配/转/等,以明确定义的格式将数据传递给浏览器,提供一个接收数据并可以实现逻辑的 javascript 模板,并提供可以由客户端调用的 Web API (浏览器)采取所需的操作。这样您就不必担心安全性或服务器电源问题。

        【讨论】:

          【解决方案6】:

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

          (您可能需要多次通过以确保您不会错过任何内容。)

          【讨论】:

          • 也没有 exec exec"imp""ort os" :)
          猜你喜欢
          • 1970-01-01
          • 2012-01-13
          • 2020-09-12
          • 2022-01-17
          • 1970-01-01
          • 2019-12-11
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          相关资源
          最近更新 更多