作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我打算用 python (+qt4) 编写一个可插入的应用程序。但是我非常担心安全问题。插件应该足够强大,可以在应用程序中做任何他们喜欢的事情(作为进一步的限制,在使用这样的插件时会有一个签名过程和警告用户),但与环境(文件系统,其他进程)交互、网络等)应该由插件仅通过我将编写的一些 python 代码来完成。
除了在安装插件之前必须对插件代码进行静态代码分析之外,是否有任何安全且简单的方法来实现它?
最佳答案
简而言之:没有。
说明:多年来,Python 专家们一直在尝试为 Python 构建一个沙箱。沙箱的问题是你需要做一些事情来做任何 IO(即能够在你的沙箱和应用程序之间传输数据)。他们没有找到一种自动的、pythonic 的方式来做到这一点。要么,您无法与插件交换数据,要么内省(introspection)将允许遍历应用程序中的对象树 -> 访问您喜欢的所有内容。
想象一下您的想法:该插件调用您编写的一些 Python 代码。这可能意味着调用一个方法或函数。这意味着你必须给我一个有效的方法或函数对象。从方法或函数对象,我可以得到你的模块对象。从您的模块中,我可以获得所有符号(即导入)。从那里,我可以做你的模块可以做的一切(至少)。
See this article一些指点。
关于python - 沙盒 python 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673879/
我是一名优秀的程序员,十分优秀!