ios - 如何检测 iCloud 钥匙串(keychain)的变化

标签 ios cocoa icloud keychain

有没有办法在 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/

相关文章:

ios - 在 iOS 上调用 posix_spawn

ios - 在我的 viewDidAppear 中,我怎么知道它何时被 child 解开?

ios - 在不同的 UIImageViews 中显示照片

objective-c - 终止应用程序并将其替换为早期版本以进行升级安装

ios - SSL_ERROR_SSL(1) : operation failed within the library

cocoa - Swift 中 Printable 和 DebugPrintable 的区别

cocoa - 由绑定(bind)引起的 NSWindowController 循环依赖?

ios - 如何使用 CALDAV 在 ICLOUD 日历中添加/编辑/删除事件

ios - 保存到iCloud时收到信号SIGSTOP

ios - 检查给定的 PHAsset 是 iCloud Assets 吗?