ios - 当应用程序被沙盒化时,为什么 Apple 建议在 iOS 钥匙串中存储密码、机密和密钥?
问题描述
我很难理解使用 iOS 钥匙串存储应用程序密码、机密和密钥的好处。这是“处理”这些数据的推荐方式,但从安全角度来看,我没有看到好处。
首先,苹果声称钥匙串可以防止其他应用程序访问钥匙串中的敏感数据。应用程序沙盒设计已经阻止了这种情况,所以我不明白为什么需要存储在钥匙串中。其次,苹果声称数据被“加密”存储在 iOS 钥匙串中,并且可以为每个钥匙串项目指定锁定/访问控制。如果用户“root”设备(越狱手机),则有一些工具可以访问 iOS 钥匙串中的全部数据,从而使钥匙串加密和访问控制变得无用。
在我看来,iOS 钥匙串所做的一切都是增加额外的开销,从安全角度来看,Apple 的应用程序沙盒和应用程序代码签名应该足以保护敏感的应用程序数据。我们应该能够简单地将敏感数据存储在 iOS 应用程序的文件系统或代码中,并依赖 Apple 的应用程序沙盒和代码签名。我错过了什么吗?
解决方案
您错过的一件事是,即使删除了应用程序,存储的数据也会保留在 Keychain 中,因此可以在用户重新安装应用程序时检索它,这与应用程序文件系统上的数据不同,应用程序文件系统上的数据会丢失已移除。
推荐阅读
- vis.js - 如何在 vis.js 中的方形节点内放置标签
- python - 如何在不设置通道优先级的情况下强制使用默认 conda 通道进行软件包安装
- ios - Swift 中用户的 appStoreReceiptURL 是静态的吗?
- javascript - 主加载后 10 秒加载网页内容
- java - 黑客可以通过从客户端的信任库中提取证书来创建 MITM 攻击吗?
- reactjs - 在反应中使用 redux-thunk 初始化单个计时器
- java - 协助编写构造函数
- node.js - 如何从函数将响应发送回 nodejs 中的邮递员?
- unicode - 为什么嘊字符的 URL 编码为 %E5%98%8A?
- javascript - 如何在循环中返回函数(for .. of ..)javascript?