禁用标准.和Python沙箱实现中的文件I/O.

Zac*_*ach 6 python io pypy file sandbox

我正在尝试设置Python沙箱,并希望禁止访问标准和文件I/O. 我在正在运行的Python服务器中运行沙箱.

我已经看过像RestrictedPython和的模块了PyPy; 但是,我希望能够在运行的Python服务器中编译沙箱代码,而不是通过外部进程编译.

是否有任何其他方法,以防止进入像命令print,raw_inputopen?是否可以在运行的Python程序中编译沙箱代码的方式使用上述模块?

在最坏的情况下,你会如何阻止访问raw_input

编辑:根据本教程安全地评估Python代码,是否可以传入一个被操作的内置模块?

Try*_*yPy 5

对此的粗略共识是,CPython的复杂性和内省能力导致将不正确的解释器部分列入黑名单的尝试.我相信其中一项主要尝试是tav的安全.导致CPython崩溃并不难,这开启了另一条可以从运行任意代码中利用的路径.避免资源耗尽或CPU用的DoS从任意代码大概是不可能的进程做(你需要一个看门狗,系统限制等).

关键的东西的人希望有沙箱中的代码执行Python是避免滚你自己(或简单修改sys,__builtins__):它很容易说服自己它的坚如磐石,但错过了一些明显的解决方法绕过你的保护.请记住,Python过去常常包含一个提供这种保护的模块,甚至包含可以逃避限制的明显问题.IIRC,很容易将非限制性物体(通过内省)捕捞到受限制的环境中.

也就是说,pysandbox是由一个核心Python开发人员编写的,他认为在限制例如IO时它是安全的(并且它结合了许多以前的研究)并且可以像你想要的那样在进程中运行(尽管有少量功能,比如DoS) CPU和内存使用的保护).

  • 只是为了更新(因为我今天在这里冲浪)pysandbox 作者认为他的方法不安全且不值得使用。https://mail.python.org/pipermail/python-dev/2013-November/130132.html (2认同)