我可能正在为Cocoa应用程序(Mac,而不是iPhone)编写一个插件系统。
一种常见的方法是使每个插件成为包,然后将包注入到主应用程序中。我担心这样做的安全性问题,因为捆绑包将完全访问Objective-C运行时。我特别关注的是一个能够访问处理注册和序列密钥的代码的插件。
我们正在考虑的另一个插件系统是基于分布式通知的。基本上,每个插件将是一个单独的进程,它们将仅通过分布式通知进行通信。
有没有一种方法可以安全地加载包(例如沙箱)?如果没有,您认为使用分布式通知有什么问题吗?有没有其他更好的插件架构?
发布于 2010-05-13 13:32:33
是的,OS X在每个进程级别上都有sandboxing support。我所知道的唯一开源的第三方客户端是Chrome。您还可以研究诸如Native Client之类的包装器。
也就是说,出于安全原因,尝试用沙箱保护插件是没有意义的,除非您通过网络(即web浏览器)加载不受信任的插件或内容。如果有人想要在本地破解您的应用程序,他们可以只使用调试器、DTrace等。
你在应用程序和插件进程之间使用的IPC机制实际上取决于你正在进行的通信类型。对于大多数目的来说,机器间分布式对象(我假设这就是您想要编写的对象)当然不是一个坏的选择,但是您不会想要通过它发送视频。您可以查看正在开发中的WebKit2使用的CoreIPC;它在Mach端口上工作。
https://stackoverflow.com/questions/2824082
复制相似问题