在钥匙串中保存数据模型有啥缺点? [关闭]
Posted
技术标签:
【中文标题】在钥匙串中保存数据模型有啥缺点? [关闭]【英文标题】:What are the downsides of saving data models in keychain? [closed]在钥匙串中保存数据模型有什么缺点? [关闭] 【发布时间】:2020-04-05 22:02:59 【问题描述】:我知道 Keychain 是为保存密码、InternetPasswords、加密密钥等而设计的。但是,为什么不只保存小型可编码模型呢?
例如,一个可编码和可解码的结构,它包含大约 100 个用户敏感偏好的属性。
我试过了,效果很好。虽然,没有太多的具体信息可用,我想了解这样做是否有任何缺点。
【问题讨论】:
@PaFi:你经历过吗?还是猜测? 【参考方案1】:实际上没有什么可以阻止您这样做,因为编码的数据模型将采用 Data/NSData 的形式。在朝着这个方向前进之前,可能需要记住两点:
每个文件有一个实际大小限制 单个钥匙串项(我个人找不到官方说明,但我记得写一个数据大小大于约 2 MB 的钥匙串项,导致钥匙串写入错误)。这意味着您应该注意数据模型的大小(例如,使用短 CodingKeys 而不是实际的属性名称,将在要写入的结果数据块中使用更少的字节)
当用户删除应用程序时,钥匙串数据不会被删除。这是否会永远保持这种状态我无法判断,但就目前而言,这是一个事实,这意味着您可能需要在您的应用程序中添加一个逻辑,以确保在前一个应用程序之上的另一个安装可能不会使用旧的/脏数据作为不必要的
我并不劝阻您为此使用钥匙串,但如果有其他方法,例如在钥匙串上存储加密密钥并使用它来加密/解密您的实际数据模型并将它们安全地写入您的应用程序文件夹。您可以将此与 NSFileProtectionComplete 设置等额外步骤结合使用,仅当设备实际上受密码保护时才可访问钥匙串中的加密密钥,如果您计划存储大量数据,则可能将加密和 CoreData 结合在一起。
希望对你有帮助
【讨论】:
laco:感谢您的详细回答。你已经涵盖了我脑海中的一切,甚至更多。在我接受您的回答之前,我想再听听一些经验。以上是关于在钥匙串中保存数据模型有啥缺点? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以保存数据,即使在没有钥匙串的情况下在 ios 上重新安装应用程序?
Keychainitemwrapper 类中的 SecItemCopyMatching 条件失败,因此无法检索钥匙串中保存的值