关于App Sandbox

这是一篇译文,原文出自水果开发者官网 developer.apple.com,原标题为 About App Sandbox

App Sandbox(以下或简称应用程序沙盒,应用程序沙箱,沙盒或者沙箱)是 OS X 系统提供的一种访问控制技术,它在内核级别被强制要求。一旦某个应用遭到破坏,沙盒能够保护系统和用户数据免受波及。通过 Mac App Store 分发的应用程序必须采用沙盒。还有一些应用程序不通过 Mac App Store 分发,而是使用开发者账号做签名的(大多数情况下)也要使用沙盒。

系统越复杂便越是容易遭受攻击,软件不断迭代并随着时间的推移变得越来越复杂。你采取安全编码实践来防止 bug 的出现,但攻击者只需要穿透你的防御即可成功入侵。尽管沙盒不能阻止应用程序遭受攻击,但它能把入侵造成的损害控制在最小程度。

非沙盒的应用程序具有运行应用程序用户的完整权限,并且能访问用户可以访问的任何资源。如果应用程序或者该应用链接的任何框架存在安全漏洞,那么攻击者会试图利用这些漏洞来获取应用程序的控制权,一旦得逞,攻击者就可以为所欲为。

为了解决这些问题,应用程序沙盒采取了两个策略:

  1. 沙盒允许你描述应用如何与系统交互。然后系统授予应用运行所需要的权限。
  2. 沙盒允许用户通过“打开”和“保存”对话框 ,拖放,删除以及其他类似的用户交互来授予额外的权限。
app sandbox

然而,沙盒不是银弹。应用程序仍然会受到影响,并且可能遭受攻击。但是潜在的破坏影响范围会受到严格的限制,因为应用程序只能拿到保证其正常运行所能获取的最小权限。

应用程序沙箱基于一些简单的原则

如果攻击者在你的应用程序中成功的发现一个安全漏洞,那么应用程序沙箱通过限制每个应用对敏感数据的访问,铸起最后一道防御措施来应对盗取,篡改或删除用户数据,以及劫持系统硬件等行为。例如,一个沙盒应用要使用以下资源就必须明确声明:

  • 硬件(摄像头,麦克风,USB,打印机)
  • 网络连接(入站或出站)
  • 应用数据(日历,位置,联系人)
  • 用户文件(下载,图片,音乐,电影,用户选择文件)

在系统运行时,对在项目定义中未明确请求任何资源的访问都是拒绝的。比如,如果你正在使用 sketch(编辑图片之类),你知道应用程序不需要访问到麦克风,你当然也不会去请求,同时系统会拒绝任何尝试通过应用程序(可能已被入侵)启用麦克风的行为。

另一方面,沙盒应用可以访问你请求的特定资源,允许用户以常用方式(比如拖放操作)执行典型操作来扩展沙盒,并且可以自动执行很多安全相关的额外操作,包括:

  • 从服务菜单调用服务
  • 读取多数全局可访问的系统文件
  • 打开用户选择的文件

END

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,941评论 25 709
  • 注:原文引用Mac开发官方文档,鉴于Mac开发文档较少,本人主要做一下梳理,同时记录学习过程。 Mac应用环境 (...
    lishichuang阅读 7,787评论 0 2
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,292评论 30 472
  • 我和他的第一次牵手是什么情形? 好像是在一个天台上。 那天晚上,组员们为他践行——学美术的应该知道,艺考之前都有一...
    蓝莓与橙阅读 4,280评论 2 1
  • 这段时间因为装修和晚上上课的原因,时间上不是很富裕,加之海宝比较调皮,天气燥热,家人情绪不是很稳定。所以打卡没有按...
    三河散人阅读 3,456评论 0 0