我很想知道OS X Lion中的新安全模型将如何影响未来。具体来说,我正在质疑Entitlements和Sandboxing。
这不是这些是好主意的问题。相反,这是一个最佳猜测将来会发生什么的问题。
我对像Python这样的东西感到好奇。我的公司使用基于Web的软件为紧急情况制作了一个小型Python应用程序。这包括读取和写入文件系统。
我们的应用程序没有权利,因为它只是Python代码,我们不做任何Cocoa包装。当Mac App Store要求所有应用程序必须进行沙盒处理并列出其权利生效时,我想知道Apple是否会推出操作系统更新并说“这是我们从现在起如何进行安全保护,如果你的应用程序不符合我们的安全模型,它不会运行,因为它不安全。“
我对此有不同的看法。一方面,我认为让消费者的机器更安全是件好事。少流氓代码和所有腐烂。另一方面,它会让很多开发人员的开发成为一个生机勃勃的地狱。
如果Leopard或Snow Leopard发布相同的更新,我也想知道是否应该为Lion发布这样的更新。我的想法不是Leopard,因为它比目前的操作系统落后两代。 Snow Leopard都取决于Apple想要支持旧操作系统的时间。
所以,现在我向Apple开发人员展示他们对这个话题的看法,并且可能产生以前没有的想法。
答案 0 :(得分:6)
如果您可以将Python与脚本一起嵌入并使用类似py2app的内容将其打包到.app中,我认为您可以add/edit the Info.plist来满足Apple的签名要求。同样对于权利,我认为你可以edit the .app's entitlements.plist。我认为沙箱强制执行器 sandboxd 不是特定于语言的,它只是允许/阻止进程访问设备和文件(例如,通过不授予受限制的文件描述符)。请记住,嵌入式Python解释器可能默认需要访问某些权限进行初始化(因为它可能不会在考虑沙盒的情况下创建)。
对于iOS设备(必须在商店中出售沙盒),Apple的政策(iOS开发者计划协议第3.3.2节)是:
应用程序可能无法下载或安装可执行代码。如果所有脚本,代码和解释器都打包在应用程序中而未下载,则解释的代码只能在应用程序中使用。
如果可能的话,似乎上述解决方案将满足此要求(假设OS X应用程序将采用类似的规定)。但是,如果您对在App Store上发布应用程序不感兴趣,我认为您无需担心。我非常怀疑他们是否需要代码签名或权利,以便在您的计算机上运行应用程序(而不仅仅是沙盒化在App Store上销售的应用程序,使其成为获取应用程序的“安全”位置。)