OStack程序员社区-中国程序员成长平台

标题: ios - 在后台或通知进程中使用加密 Realm ? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 22:46
标题: ios - 在后台或通知进程中使用加密 Realm ?

Realm 有一个很棒的 write upsample code用于加密您的数据库。本文档和示例按预期工作,直到您尝试在以下情况下解密 Realm :

  1. 用户的手机上有密码
  2. 设备已锁定
  3. 当收到远程通知时,您的应用正在尝试与 Realm 一起工作

发生这种情况是因为我们无法访问钥匙串(keychain)来获取(或创建)用于加密/解密 Realm 的 key 。默认的 kSecAttrAccessible 值为 kSecAttrAccessibleWhenUnlocked

在我看来,有几个选项:

  1. kSecAttrAccessible 更改为 kSecAttrAccessibleAlways。我不喜欢这个,因为它 a) 太开放 b) 它是 slated to be deprecated在 iOS 9 中
  2. kSecAttrAccessible 更改为 kSecAttrAccessibleAfterFirstUnlockkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly。这更好,但对我来说仍然感觉太开放了,即使 docs state:推荐用于需要后台应用访问的项目
  3. 创建第二个非加密 Realm 以用作临时数据库。在此处存储通知数据,然后当应用程序从用户交互中唤醒(设备将被解锁)时,将数据从暂存 Realm 移动到加密的真实 Realm 。这也感觉不对,因为我们的数据暂时未加密
  4. 结合 2 和 3 对 staging Realm 进行加密,并使用 kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
  5. 保护它的 key
  6. ??

我目前正在尝试确定 #2、#3 是否值得投入时间,或者我是否可以提出 #5

这里有没有我明显应该使用的方法或我错过的方法?

谢谢



Best Answer-推荐答案


我是 KeychainAccess 的作者图书馆。我强烈建议您使用 kSecAttrAccessibleAfterFirstUnlock (第二个选项)。这是从后台访问钥匙串(keychain)项目的最佳方式。

关于ios - 在后台或通知进程中使用加密 Realm ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332246/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4