在Python中实现'sandbox'环境曾经使用rexec模块(http://docs.python.org/library/rexec.html)完成。不幸的是,由于某些安全漏洞,它已被弃用/删除。还有其他选择吗?
我的目标是让Python代码执行半可信的Python脚本。在一个完美的世界中,调用预定义集合之外的任何函数都会引发异常。从我读到的有关rexec弃用的内容来看,这可能是不可能的。所以我会尽可能地满足。我可以生成一个单独的进程来运行脚本,这有很大帮助。但他们仍然可能滥用I / O或处理器/内存资源。
答案 0 :(得分:4)
您可能希望提供自己的__import__
,以防止包含您认为“滥用I / O或处理器/内存资源”的任何模块。
您可能希望从pypy开始,并创建自己的解释器,其中包含资源使用的限制和约束。
答案 1 :(得分:2)
是: “不要在你公司的孩子那样做” - 事情。
尝试:
请参阅Warning:
<强> 警告 强>
在Python 2.3中,由于各种已知且不易修复的安全漏洞,这些模块已被禁用。这里仍然记录了这些模块,以帮助阅读使用rexec和Bastion模块的旧代码。
答案 2 :(得分:1)
cPython中安全性的最佳选择是使用操作系统级别的沙盒机制,并在受操作系统限制的单独进程中运行不受信任的代码。
这相当于使用&#39; jython和java&#34;沙盒&#34;&#39;,按照the answer above,但可能更难配置。