对于Python沙盒,有没有替代rexec的方法?

2024-09-30 12:14:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


Tags: 模块org脚本httpdocs目标环境html
3条回答

在cpython中,出于安全原因的“沙箱”是: 不要在你公司的孩子们身上这样做,”-事情。在

尝试:

  • 使用java“沙盒”的jython
  • pypy->;见答案S.Lott
  • 也许ironpython有一个解决方案?在

Warning

警告

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

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

这相当于按照the answer above使用'jython with java“沙盒”',但是配置起来可能会有点困难。在

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

您可能需要从pypy开始,创建自己的解释器,并对资源使用进行限制和限制。在

相关问题 更多 >

    热门问题