在 Python 中实现“沙箱”环境过去是通过 rexec 模块完成的(http://docs.python.org/library/rexec.html)。不幸的是,由于一些安全漏洞,它已被弃用/删除。还有其他选择吗?

我的目标是让 Python 代码执行半可信的 Python 脚本。在完美的世界中,调用预定义集之外的任何函数都会引发异常。根据我读到的有关 rexec 弃用的信息,这可能是不可能的。所以我会尽可能地满足。我可以生成一个单独的进程来运行脚本,这很有帮助。但他们仍然可能滥用 I/O 或处理器/内存资源。

有帮助吗?

解决方案

您可能需要提供自己的__import__防止包括您认为任何模块的“滥用I / O或处理器/内存资源。”

您可能要开始与 pypy ,并创建自己的解释与局限性和资源利用的限制。

其他提示

在cpython"沙盒"出于安全原因是: "不这样做在你的公司孩子"-事情.

尝试:

  • script java"沙盒"
  • pypy->看到答案S.洛特
  • 也许ironpython有一个解决方案?

看看 警告:

警告

在Python2.3这些模块已被禁用,由于各种已知和不容易可以解决的安全漏洞。该模块仍然记录在这里帮助在阅读旧编码的使用而言和堡垒的模块。

cPython 中安全性的最佳选择是使用操作系统级沙箱机制,并在受操作系统限制的单独进程中运行不受信任的代码。

这相当于使用“jython 与 java“沙箱””,根据 上面的答案, ,但配置可能有点困难。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top