【问题标题】:How can I implement password recovery in an iPhone app?如何在 iPhone 应用中实现密码恢复?
【发布时间】:2011-06-27 23:51:07
【问题描述】:

我想在我正在开发的 iPhone 应用程序中添加简单的密码保护。我可能会使用 crypt() 以 CoreData / sqlite 格式将密码存储在我的数据库中。

我想我对如何创建和存储密码已经很了解了,但是如果用户忘记了密码,我想添加一个密码恢复功能

这是我在 iOS 中苦苦挣扎的部分。我希望一切都是本地的,所以我想不出使用链接重置密码的方法。

我曾考虑通过电子邮件发送密码,但在 iOS 中,如果手持设备的人没有看到电子邮件的内容,就无法发送电子邮件。

我能想到的唯一方法是拥有一两个“备用密码”,这基本上是用户选择问题的答案(或者甚至可能只是将提醒问题与密码一起存储)。

这些都不是真的那么安全,虽然我的应用程序中受保护的数据不是那么重要,所以我不是在寻找最强大的解决方案(只是一个不太难实现的体面的解决方案,不是太难对用户来说很不方便,对黑客来说也不太难破解)。

非常感谢您的建议。

谢谢, 罗恩

【问题讨论】:

  • 您将纯文本密码存储在哪里?为什么需要通过电子邮件发送?
  • 我强烈建议不要使用安全问题。这些已被证明是不安全的。另外,如果您要保护数据,请不要忘记也对其进行加密(当然使用从用户密码派生的密钥),否则密码保护无效。它可能会给恢复密码的能力带来一些问题。
  • @Artium ...感谢您的提示!安全性对我的应用程序来说并不重要。它基本上是一个学习应用程序,不同的用户可以为彼此准备“测试”。我只是想确保学生作弊不是“超级容易”,所以我想要一个非常基本的密码保护方案。如果学生真的想作弊,有很多方法可以这样做......我只是想让他们更难一点。

标签: iphone ios passwords


【解决方案1】:

您可以使用最初创建帐户时设置的条件(例如母亲的娘家姓、姓氏 4 等)提示您重置密码,而不是恢复密码。这样,您就不需要担心解密密码或将其发送给用户。一旦他们正确回答了足够多的安全问题,就会提示他们重置密码。您可以在本地加密存储此数据。您永远不需要向用户发送密码。

【讨论】:

  • Experian.com 使用此模型。
  • 感谢您的回复!这似乎是一种合理的方法(特别是因为我对安全性并不那么偏执)。
【解决方案2】:

最简单的方法可能是将“密码保护”设为可选并显示警告(“如果您忘记密码,您的数据可能无法恢复!”)。

它不会那么安全:除非您自己加密,否则数据可能会在手机备份中显示为未加密。结果是确定的用户可以向您寻求帮助,您可以为他们编写一个工具来挖掘未加密的备份并重置密码。

避免使用内置的crypt(),它可能基于 DES 并且限制为 8 个 ASCII 字符。将明文密码存储在钥匙串中并不是糟糕的选择。

【讨论】:

  • 感谢您的建议!您是否有理由建议避免使用 crypt()?是因为出口限制,还是其他原因(我认为 crypt 可以安全使用......尤其是在加密密码而不是数据时)。我可能不会只存储纯文本,但我可以做一些简单的位旋转而不是 crypt()。
  • 我在回答中说:传统的基于 DES 的 crypt() 严重不足,主要是它的输入仅限于 8 个 ASCII 字符和 12 位盐。 OS X 似乎没有改进的crypt()。 bcrypt 不错(但使用提供的 bcrypt_gen_salt 函数;您可能需要对其进行调整以调用 SecRandomCopyBytes() 左右):codahale.com/how-to-safely-store-a-password
  • 感谢您的澄清和链接。读起来很有趣!
  • @tc。我们遇到了一些被警告过的用户,但仍然忘记了他们的密码,提示对他们没有好处,他们不记得他们的问题的答案。那么,我的问题是,如何挖掘快照以恢复密钥链中的凭据?我搜索了一下(不是详尽无遗),没有发现任何成果。
  • @stephen 如果备份已加密,您可能会遇到code.google.com/p/iphone-dataprotection。如果备份未加密,则数据将使用特定于设备的密钥进行加密。如果用户不再有权访问该设备,那么您就不走运了。如果用户确实可以访问设备并且您是应用程序开发人员,您可以编写一个从钥匙串中读取密码的应用程序,但这是(大部分)完全与原始问题无关。
猜你喜欢
  • 2010-11-13
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多