3

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

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

感谢您分享的任何见解。

4

2 回答 2

2

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

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

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

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

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

自己有效地实施加密超出了这个答案的范围。

于 2010-09-12T04:37:49.667 回答
0

关于字符串长度:

iOS Keychain 上可存储的最大字符串长度与字符串的最大可能长度没有区别。但是,人类可能不会生成那么长的字符串,更不用说记住它了。

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

相关文章:

解码一个巨大的 NSString,内存不足

NSString stringWithFormat 很慢

于 2013-07-30T16:04:54.750 回答