2012-02-06 104 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