Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在keychain中保存数据模型的缺点是什么?_Ios_Swift_Security_Keychain - Fatal编程技术网

Ios 在keychain中保存数据模型的缺点是什么?

Ios 在keychain中保存数据模型的缺点是什么?,ios,swift,security,keychain,Ios,Swift,Security,Keychain,我知道Keychain是为保存密码、互联网密码、加密密钥等而设计的。但是,为什么不保存小的可编码模型呢 例如,一个可编码和可解码的结构,它包含大约100个用户敏感偏好的属性 我试过这个,效果很好。虽然,没有太多的具体信息可用,我想了解这样做是否有任何负面影响 实际上没有什么可以阻止您这样做,因为编码的数据模型将以data/NSData的形式出现。在向该方向前进之前,可能需要记住以下两点: 每个人都有一个实际的尺寸限制 我个人找不到正式声明的单个钥匙链项目,但我记得写一个数据大小大于2MB的钥匙链

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

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


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

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

每个人都有一个实际的尺寸限制 我个人找不到正式声明的单个钥匙链项目,但我记得写一个数据大小大于2MB的钥匙链项目会导致钥匙链写入错误。这意味着您应该注意数据模型有多大,例如,使用短编码键而不是实际的属性名,将在要写入的结果数据块中使用更少的字节

当用户删除应用程序时,不会删除钥匙链数据。我不知道这是否会永远像这样,但这是目前的事实,这意味着你可能需要在你的应用程序中加入一个逻辑,以确保上一个应用程序之上的另一个安装不会将旧/脏数据用作不必要的数据

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


希望能有所帮助

laco:谢谢你详细的回答。你涵盖了我脑海中的一切,还有更多。在我接受你的回答之前,我想再听听你的经历。@PaFi:你有过这样的经历吗?还是猜测?