是否有替代Python沙盒的rexec?

时间:2009-02-08 02:51:32

标签: python security sandbox rexec

在Python中实现'sandbox'环境曾经使用rexec模块(http://docs.python.org/library/rexec.html)完成。不幸的是,由于某些安全漏洞,它已被弃用/删除。还有其他选择吗?

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

3 个答案:

答案 0 :(得分:4)

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

您可能希望从pypy开始,并创建自己的解释器,其中包含资源使用的限制和约束。

答案 1 :(得分:2)

出于安全原因,在cpython“sandboxing”中的

是:  不要在你公司的孩子那样做” - 事情

尝试:

  • jython with java“sandboxing”
  • pypy - >见答案S.Lott
  • 也许ironpython有解决方案?

请参阅Warning

<强> 警告

在Python 2.3中,由于各种已知且不易修复的安全漏洞,这些模块已被禁用。这里仍然记录了这些模块,以帮助阅读使用rexec和Bastion模块的旧代码。

答案 2 :(得分:1)

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

这相当于使用&#39; jython和java&#34;沙盒&#34;&#39;,按照the answer above,但可能更难配置。