Iphone 钥匙链密码陷阱

Iphone 钥匙链密码陷阱,iphone,ipad,passwords,password-protection,keychain,Iphone,Ipad,Passwords,Password Protection,Keychain,在钥匙链中存储用户密码时,是否有任何已知的陷阱可避免?我计划让用户能够要求密码才能访问我的iPad应用程序。我有一个基本的读写字符串的钥匙链工作。我只是想确保我不允许他们陷入这样一种情况:他们把自己锁在外面,而不是因为自己的过错。例如: 键盘是否允许他们输入无法保存或从钥匙链读取的特殊字符 字符串长度有限制吗 感谢您提供的宝贵意见。请保存密码。把它读回来。确保它有效。如果没有,请告诉用户失败,并让他们输入其他密码 并非所有键盘都能输入所有字符。大约3.1.2版本中的电话锁键盘(不确定是否已修

在钥匙链中存储用户密码时,是否有任何已知的陷阱可避免?我计划让用户能够要求密码才能访问我的iPad应用程序。我有一个基本的读写字符串的钥匙链工作。我只是想确保我不允许他们陷入这样一种情况:他们把自己锁在外面,而不是因为自己的过错。例如:

  • 键盘是否允许他们输入无法保存或从钥匙链读取的特殊字符
  • 字符串长度有限制吗

感谢您提供的宝贵意见。

请保存密码。把它读回来。确保它有效。如果没有,请告诉用户失败,并让他们输入其他密码

并非所有键盘都能输入所有字符。大约3.1.2版本中的电话锁键盘(不确定是否已修复)有一个缺陷,它会限制您使用“支持ASCII”的键盘(例如,非希伯来语),但不会限制可以输入的字符;启用某些键盘会增加额外的重音,而某些键盘有额外的符号。然后你可以禁用一些键盘,锁定手机,完全无法解锁。(我在测试之前做了备份。)

在您的情况下,您不会阻止用户使用键盘,因此这不是一个问题

请注意,这是从错误的方向进行的:密码将解锁内容。您正在尝试保持内容的安全。您不需要将密码保存在任何地方(您可以使用它来加密内容)

文件在(未加密)备份中也将显示为未加密。在3.1.2中,您可以备份密码锁定的电话(不确定他们是否在3.2中修复了此问题);这意味着在没有备份密码的设备上,您可以通过将其连接到笔记本电脑并按“备份”来窃取所有内容


有效地自行实现加密超出了本答案的范围。

关于字符串长度:

iOS密钥链上的最大可存储字符串长度与字符串的最大可能长度之间没有差异。人类可能不会产生那么长的字符串,更不用说记住它了

值得一提的是,存储到密钥链的大值会影响性能,因为必须对其进行加密/解密才能写入和读取

相关职位:


加密可能需要在您的特定管辖区提交CCAT文件,这可能会产生非零法律费用。这是一个很好的理由,不将其用于并不真正安全的应用程序,例如游戏角色上的“妹妹”密码锁或高分。我只是不喜欢添加比实际安全性更明显的安全性,但我不建议在任何地方都涂抹“注意,这不是100%安全的”—很难向用户传达“级别”的安全性,也很难让用户理解。但是,如果您存储了用户的密码,则一定要将其粘贴在钥匙链中—用户重复使用密码。感谢您的回复。我只是想澄清一下,我并不打算加密内容(例如应用程序中的文档),我计划在应用程序启动时捕获该应用程序,并要求输入密码才能继续。我试图解决的问题是:我正在与其他人共享我的iPad。我不想让他们看到我在这个特定的应用程序中要做什么。我想我可以尝试对特定文件进行加密,以防止它们在应用程序发布后被读取,但我认为这可能超出了我的用户的要求。在键盘主题上,我试图通过限制UIKeyboardTypeNumberPad来简化这个问题,但iPad似乎不像iPhone那样呈现这种情况(即,只有数字和返回)。仍然可以看到字母和标点符号。您的帖子给了我另一个想法。也许我根本不应该使用UIExtField和键盘。只需显示UIPicker视图,并将数字作为PIN。也许这是最安全的。