有没有办法在 iCloud(或任何)钥匙串(keychain)更改(添加/删除/更改项目)时收到通知?
类似于 KVS 中的 NSUbiquitousKeyValueStoreDidChangeExternallyNotification
我想我可以只对 OSX 上的 $HOME/Library/Keychains 文件夹进行文件监视,但是有更好的选择吗? (这甚至可以在 iOS 上运行吗?)
最佳答案
据我所知,钥匙串(keychain)服务,无论钥匙串(keychain)是本地的还是 iCloud 钥匙串(keychain),都不会宣布更改。您应该如何使用钥匙串(keychain)的方式也让人怀疑这样做。
存储在钥匙串(keychain)中的密码数据受到保护,因为它始终处于加密状态。只有当您请求该数据时,它才会暂时解密,只为您解密,解密后的副本会传递给您的应用程序,然后被丢弃。您应该将该解密副本用于您需要的任何任务,然后也将其丢弃。
为什么要丢弃它?因为当你把它放在你的应用程序中时它是不安全的。根进程可以转储您应用程序的所有内存,然后此转储还将包含所有缓存的明文密码。并且利用 iOS 中的安全漏洞,也许我们甚至还不知道,攻击者可能能够以 root 权限运行代码(毕竟,所有越狱都是基于这样的漏洞,所以你看,它们确实存在).
当您再次需要它时?然后你再次从钥匙串(keychain)中获取它。每次需要时,您都应从钥匙串(keychain)中获取密码。那么为什么需要检测变化呢?当你获取它时,你要么会得到一个结果,在这种情况下,你总是拥有存储在钥匙串(keychain)中的最新密码,无论最近几分钟更新的频率如何,要么你得不到结果,因此知道有钥匙串(keychain)中没有这样的密码,因为根本没有密码或已被删除。您需要在您的应用中处理“从来没有密码”的情况,通常您可以处理“密码已删除”的情况完全相同。 p>
关于ios - 如何检测 iCloud 钥匙串(keychain)的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35291528/