将数据模型保存在钥匙扣中有哪些缺点



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

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

我试过了,效果很好。尽管如此,目前还没有太多具体的信息,我想了解这样做是否有任何负面影响。

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

  • 单个钥匙链项目(我个人找不到官方声明的,但我记得写一个数据大小大于2MB的钥匙链项目,导致了钥匙链写错误(。这意味着你应该小心数据模型的大小(例如,使用短的CodingKeys而不是实际的属性名称,会在要写入的数据块中使用更少的字节(

  • 当用户删除应用程序时,密钥链数据不会被删除。我不知道这种情况是否会永远保持下去,但就目前而言,这是一个事实,这意味着你可能需要在你的应用程序中设置一个逻辑,以确保前一个安装程序之上的另一个安装可能不会将旧/脏数据用作不必要的

我并不反对你使用密钥链,但在这种情况下,还有其他方法,比如在密钥链上存储加密密钥,并使用它加密/解密你的实际数据模型,并将它们安全地写入你的应用程序文档文件夹。您可以将其与NSFileProtectionComplete设置等额外步骤结合起来,使密钥链中的加密密钥仅在设备实际受密码保护的情况下才可访问,如果您计划存储大量数据,则可以将加密和CoreData结合在一起。

希望它能帮助

最新更新