沙盒python插件

Fla*_*ius 2 python plugins sandbox

我打算在python(+ qt4)中编写一个可插拔的应用程序.但是我对安全问题非常关注.插件应该足够强大,以便在应用程序中做任何他们喜欢的事情(并且作为进一步的约束,在使用这样的插件时会有签名过程和用户​​警告),但是与环境交互(文件系统,其他进程) ,网络等)应该只通过我将编写的一些python代码通过插件来完成.

有没有安全简便的方法来实现它,除了必须在安装之前对插件的代码进行静态代码分析?

Aar*_*lla 5

简而言之:不.

说明:多年来,Python专家尝试为Python构建一个沙箱.沙箱的问题在于您需要做一些事情来做任何IO(即能够在沙盒和应用程序之间传输数据).他们没有找到一种自动的,pythonic方式来做到这一点.或者,您无法与插件交换数据,或者内省将允许在应用程序中遍历对象树 - >访问您喜欢的所有内容.

想象一下你的想法:插件调用你编写的一些python代码.这可能意味着调用方法或函数.这意味着你必须给我一个有效的方法或功能对象.从方法或函数对象,我可以得到您的模块对象.从您的模块中,我可以获得所有符号(即导入).从那里,我可以做你的模块可以做的一切(至少).

有关指示,请参阅此文章.