ios - 钥匙串(keychain)中的密码 - 人们忘记了密码

标签 ios security passwords keychain

我有一个可能存储 secret 信息的 iOS 应用程序,还使用 ​​iCloud 在设备之间同步其核心数据(数据本身在核心数据中加密)。

人们可以使用密码保护应用程序,也可以创建两个 secret 问题来帮助他们找回丢失的密码。

密码和 secret 问题保存在钥匙串(keychain)中。

我经常收到这样的支持请求:“嘿,我忘记了密码,我也忘记了 secret 问题的答案,所以现在我无法访问我宝贵的数据。请帮忙。”

有些人还说他们试图删除应用程序并重新安装它(知道数据将从 iCloud 重新同步),假设这会重置他们的密码,这当然不会发生。

目前我没有办法帮助这些人。

问题来了

一方面,我很容易在第一次启动时从钥匙串(keychain)中清除密码和 secret 问题,以便人们在删除并重新安装应用程序时可以创建一个新的。

但是,这似乎会造成安全漏洞。未经授权的人拿到设备可以删除应用程序,重新安装,创建新密码,让应用程序与 iCloud 同步并访问 secret 数据。

我相信忘记密码的无辜者比试图窃取他人数据的人要多得多,但我仍然不愿意走“捷径”。

你怎么看?

最佳答案

简短回答:对于可能受影响的少数人,这里有一个想法:首先尝试备份到 iTunes,取消选中“加密本地备份”(这会排除钥匙串(keychain))。然后从该 iTunes 备份删除并恢复设备。这应该将应用程序及其数据放回设备上,但没有钥匙串(keychain)。请注意,我没有尝试过,所以请先测试再联系用户使用此解决方案。请参阅:http://support.apple.com/kb/TS4108一些相关说明。

长期思考:我认为在首次运行时删除用户钥匙串(keychain)数据违背了用户的期望。 Apple 在应用程序卸载后维护钥匙串(keychain),这样用户就不会丢失数据。 Apple 为用户提供的保护——密码锁、数据删除——以及开发人员可以实现的安全功能——钥匙串(keychain)、文件加密——确实涵盖了安全漏洞问题你处理这个。

不幸的是,尽管如此,您仍然无法与当前用户保持联系。 Apple 确实需要像在 OS X 上一样提供设备级用户帐户,以便将钥匙串(keychain)锁定到特定帐户。但回到现实世界中,我们仍然坚持要求用户注册的过时电子邮件地址提供密码重置电子邮件。但是,听起来您的用户帐户存储在本地。

关于ios - 钥匙串(keychain)中的密码 - 人们忘记了密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12437027/

相关文章:

c# - 在运行时执行 C# 或 VB.NET 代码

security - CSRF保护:我们是否必须为每种表格生成 token ?

c - 从函数中获取随机字符

security - 我应该如何将敏感的环境变量传递给 Amazon ECS 任务?

security - Docker容器通讯

c# - Webbrowser SetAttribute 不工作(密码字段)

iphone - CoreMotion - 磁场始终为 0

ios - NSMutableArray/UITableView

ios - Mozharovsky 的 CVCalendar 日期不显示

iOS 8 AutoLayout ScrollView 在 iPhone 6 plus 上水平滚动