菜鸟教程小白 发表于 2022-12-13 14:10:45

ios - 如何检测 iCloud 钥匙串(keychain)的更改


                                            <p><p>有没有办法在 iCloud(或任何)钥匙串(keychain)更改(项目被添加/删除/更改)时获得通知?</p>

<p>类似于 KVS 中的 <code>NSUbiquitousKeyValueStoreDidChangeExternallyNotification</code> 的东西。</p>

<p>我想我可以在 OSX 上查看 $HOME/Library/Keychains 文件夹,但有更好的选择吗? (这甚至可以在 iOS 上运行吗?)</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>AFAIK 钥匙串(keychain)服务,无论钥匙串(keychain)是本地的还是 iCloud 钥匙串(keychain),都不会宣布更改。您应该如何使用钥匙串(keychain)的方式也让人怀疑这样做。</p>

<p>存储在钥匙串(keychain)中的密码数据受到保护,因为它始终被加密。只有当您请求该数据时,它才会被临时解密,仅供您使用,解密后的副本会传递给您的应用程序,然后被丢弃。您应该将该解密副本用于您需要的任何任务,然后也将其丢弃。 </p>

<p>为什么要丢弃它?因为当你把它放在你的应用程序中时它是不安全的。根进程可以转储应用程序的所有内存,然后此转储还将包含所有缓存的纯文本密码。并且使用 iOS 中的一个安全漏洞,也许我们甚至还不知道,攻击者可能能够以 root 权限运行代码(毕竟,所有越狱都基于这样一个漏洞,所以你看,它们确实存在)。</p>

<p>当您再次需要它时?然后你再次从钥匙串(keychain)中获取它。每次需要时,您都应从钥匙串(keychain)中获取密码。那么为什么需要检测变化呢?当你获取它时,你要么会得到一个结果,在这种情况下,你总是有存储到钥匙串(keychain)的最新密码,不管最近几分钟更新的频率如何,或者你没有得到任何结果,因此知道有钥匙串(keychain)中没有这样的密码,因为要么从来没有,要么已被删除。无论如何,您都需要在您的应用程序中处理“<em>从未有密码</em>”的情况,通常您可以处理相同的“<em>密码已删除</em>”的情况。</em> p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何检测 iCloud 钥匙串(keychain)的更改,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35291528/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35291528/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何检测 iCloud 钥匙串(keychain)的更改