2012-02-06 105 views
0

我正在为Xcode 4.2中的iPad应用程序工作,并使用MySQL数据库对我的用户进行身份验证。我不知道什么是用于跟踪已登录的用户的最佳实践iOS应用登录最佳做法?

可我只是做一个变量在我的AppDelegate,例如:

@interface beAppDelegate : UIResponder <UIApplicationDelegate>{ 
    BOOL *loggedin; 
} 
- (void)setLoggedin:(BOOL *)newLoggedin; 

并将该值设置为true时是否输入了正确的用户名和密码?

或者我应该使用plist来存储用户已登录的事实吗?

有人能告诉我最安全的方法吗?

回答

-2

最佳实践是依靠操作系统已经为您完成,并避免出现自己的用户界面进行登录。

iOS已经有一个内置的认证机制,用于控制屏幕锁定和保护文件和钥匙串存储。用户可以设置(或者他们的IT部门可以授权)任何复杂性的密码:iOS将管理呈现该UI,授予访问成功输入密码,并通过限制密码的猜测率和次数来阻止攻击者。此过程使用PBKDF2生成用于访问机密存储的解密密钥,因此,如果没有密码,则此存储在整个iOS中完全不可用,并且不适用于脱机攻击。除非您的系统复制了所有这些,否则您将不太努力提供更差的实现。如果你真的复制了所有这些,那么你已经付出了很多努力来提供已经可用的潜在错误版本的东西。

但它比这更糟糕:我们还需要考虑呈现多个登录需求的用户体验。您的应用没有被真空使用:您的客户在其设备上安装了各种其他应用,包括电子邮件和消息应用。如果他们担心该信息的任意的机密性,他们可以配置iOS密码以保护全部 - 并且您的应用程序的密码提示变得多余和烦人。相反,如果他们不关心保密性,那么他们不会设置密码,并且您的应用程序的密码提示变得意外,多余和烦人。

+0

谢谢你的回答,信息非常详尽。我试图使用内置的身份验证机制,但我找不到任何示例或大量关于它的信息。你有任何例子或文件给我吗?它会帮助我很多。 – user1026090 2012-02-06 09:33:34

+0

我的意思是锁定屏幕。没有任何内置的应用程序可用(因为没有必要,如上所述)。确保您为创建的文件使用正确的“NSFileProtection”或“NSDataWritingFileProtection”标志,并将钥匙等密码存储在钥匙串中。让iOS处理剩下的事情。 – 2012-02-06 10:04:37

+0

但我如何在我的应用程序中实现钥匙串?我找不到从应用程序访问钥匙串的任何示例 – user1026090 2012-02-06 12:03:23