【问题标题】:What are the downsides of saving data models in keychain? [closed]在钥匙串中保存数据模型有什么缺点? [关闭]
【发布时间】:2020-04-05 22:02:59
【问题描述】:

我知道 Keychain 是为保存密码、InternetPasswords、加密密钥等而设计的。但是,为什么不只保存小型可编码模型呢?

例如,一个可编码和可解码的结构,它包含大约 100 个用户敏感偏好的属性。

我试过了,效果很好。虽然,没有太多的具体信息可用,我想了解这样做是否有任何缺点。

【问题讨论】:

  • @PaFi:你经历过吗?还是猜测?

标签: ios swift security keychain


【解决方案1】:

实际上没有什么可以阻止您这样做,因为编码的数据模型将采用 Data/NSData 的形式。在朝着这个方向前进之前,可能需要记住两点:

  • 每个文件有一个实际大小限制 单个钥匙串项(我个人找不到官方说明,但我记得写一个数据大小大于约 2 MB 的钥匙串项,导致钥匙串写入错误)。这意味着您应该注意数据模型的大小(例如,使用短 CodingKeys 而不是实际的属性名称,将在要写入的结果数据块中使用更少的字节)

  • 当用户删除应用程序时,钥匙串数据不会被删除。这是否会永远保持这种状态我无法判断,但就目前而言,这是一个事实,这意味着您可能需要在您的应用程序中添加一个逻辑,以确保在前一个应用程序之上的另一个安装可能不会使用旧的/脏数据作为不必要的

我并不劝阻您为此使用钥匙串,但如果有其他方法,例如在钥匙串上存储加密密钥并使用它来加密/解密您的实际数据模型并将它们安全地写入您的应用程序文件夹。您可以将此与 NSFileProtectionComplete 设置等额外步骤结合使用,仅当设备实际上受密码保护时才可访问钥匙串中的加密密钥,如果您计划存储大量数据,则可能将加密和 CoreData 结合在一起。

希望对你有帮助

【讨论】:

  • laco:感谢您的详细回答。你已经涵盖了我脑海中的一切,甚至更多。在我接受您的回答之前,我想再听听一些经验。
猜你喜欢
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 2021-10-01
  • 2014-08-09
相关资源
最近更新 更多