钥匙串密码陷阱

时间:2010-09-12 00:39:27

标签: iphone ipad passwords password-protection keychain

在Keychain中存储用户密码时是否存在任何已知的陷阱?我打算让用户能够输入密码才能访问我的iPad应用程序。我对Keychain工作有一个基本的读写字符串。我只是想确保我不允许他们进入一个场景,他们通过他们自己的过错锁定自己。例如:

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

感谢您分享的任何见解。

2 个答案:

答案 0 :(得分:2)

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

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

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

请注意,您从错误的方向接近此方法:密码解锁内容。您正在尝试保持内容安全。您无需在任何地方保存密码(您可以使用它来加密内容)。

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

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

答案 1 :(得分:0)

关于字符串长度:

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

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

相关帖子:

decoding a HUGE NSString, running out of memory

NSString stringWithFormat is slow