Ios 在后台或通知进程中使用加密域?
Realm有一个很好的加密数据库的方法。本文档和示例按预期工作,直到您尝试在以下情况下解密领域:Ios 在后台或通知进程中使用加密域?,ios,encryption,realm,keychain,Ios,Encryption,Realm,Keychain,Realm有一个很好的加密数据库的方法。本文档和示例按预期工作,直到您尝试在以下情况下解密领域: 用户的手机上有密码 设备已锁定 当收到远程通知时,您的应用程序正在尝试与域一起工作 这是因为我们无法访问密钥链来获取(或创建)加密/解密域的密钥。默认的ksecataccessible值为未锁定时的ksecataccessible 在我看来,有几个选项: 将kSecAttrAccessible更改为ksecattraccessibleallways。我不喜欢这个,因为它a)太开放,b)在iOS 9中
ksecataccessible
值为未锁定时的ksecataccessible
在我看来,有几个选项:
kSecAttrAccessible
更改为ksecattraccessibleallways
。我不喜欢这个,因为它a)太开放,b)在iOS 9中ksecataccessible
更改为ksecataccessibleafterfirstunlock
或ksecataccessibleafterfirstunlock仅此设备
。这会更好,但对我来说还是太开放了,即使状态是:对于需要后台应用程序访问的项目,建议这样做ksecattraccessiblea保护其密钥
谢谢,我是图书馆的作者。我强烈建议您使用
kSecAttrAccessibleAfterFirstUnlock
(第二个选项)。这是从后台访问钥匙链项目的最佳方式。谢谢,首先仅解锁此设备后,是否可以通过ksecattracible访问?我倾向于这样做,但后来意识到,当用户恢复他们的手机时(如果DB复制了,但它的键没有)会很快变得不稳定。此外,看起来很棒的库是的~此设备仅意味着这些项目永远不会迁移到新设备(=未备份)。如果没有特殊原因,我建议在首次解锁后使用kSecAttrAccessibleAfterFirstUnlock
,而不是~此设备的可用性。大多数用户希望通过加密备份恢复密码。