2013-04-07 84 views
1

我正在編寫代碼,其中用戶使用電子郵件+密碼註冊帳戶。我希望將登錄憑證存儲在IOS應用程序中,然後用於用戶進行的所有遠程操作(創建訂單,更新帳戶信息等)。創建「始終登錄」IOS應用程序的最安全方法是什麼?

使用PDKeychainBindings將密碼存儲在IOS密鑰鏈中是否安全,然後通過HTTPS將每個請求的用戶/密碼發送給服務器?

有更好/更安全的方法嗎?

回答

4

最安全的方式是不保存密碼。通常,首次連接時,您將使用用戶名&密碼作爲永久授權令牌。

然後,您將此令牌保存到鑰匙串中,並且所有其他服務器請求僅由令牌授權。只有當令牌無效時,纔要求用戶再次輸入密碼。 (它是永久的,所以它不應該過期,但它可以被服務器無效)。

+1

這比在鑰匙串中保存密碼要好得多。 – 2013-04-07 19:04:42

+0

蘇丹,感謝您的迴應。哪部分是不安全的?將密碼存儲在鑰匙串中?或者通過HTTPS爲每個操作發送密碼?爲了將標記存儲在鑰匙串中,是不是等於存儲密碼?如果有人扣留了令牌,他們也不能使用它?令牌容易被撤銷的唯一區別是什麼? – BigCheesy 2013-04-13 18:08:48

+0

@BigCheesy發送每個動作的密碼是危險的。你應該總是使用某種令牌。通常令牌到期(1小時左右)。移動應用程序通常使用永久令牌。它很容易更換(用戶不必更改密碼)。並且保存用戶密碼絕不安全。特別是在易被盜的設備上。 – Sulthan 2013-04-14 10:59:25

4

有兩種方法:

1)可以使用鑰匙鏈:http://developer.apple.com/library/ios/#documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html

實施例:

//Initializing 
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil]; 
//Saving 
[keychainItem setObject:@"password you are saving" forKey:kSecValueData]; 
[keychainItem setObject:@"username you are saving" forKey:kSecAttrAccount]; 
//Getting 
NSString *password = [keychainItem objectForKey:kSecValueData]; 
NSString *username = [keychainItem objectForKey:kSecAttrAccount]; 
//deleting 
[keychainItem resetKeychainItem]; 

2)可以使用NSUserDefaults的

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
NSString *pword = [prefs setObject:@"yourpassword" ForKey:@"password"]; 
NSString *username = [prefs setObject:@"username" ForKey:@"username"]; 
[prefs synchronize]; 
//getting 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
NSString *pword = [prefs objectForKey:@"password"]; 
NSString *username = [prefs objectForKey:@"username"]; 

方法1是比方法2更安全。通過加密你的pas文件,你可以使方法2更安全劍和用戶名。

希望這有助於..

+1

方法2根本不安全,'NSUserDefaults'只是一個plist。有人竊取您的設備,進行備份並將所有密碼保存在一個很好的xml文件中。只有當您可以將加密密鑰放在某個地方時纔可以進行加密,因此使用加密方法2將變爲方法1,只會更加複雜。 – Sulthan 2013-04-07 18:28:30

+0

感謝您的迴應,lakesh。但是,我並沒有要求實現鑰匙串。相反,我詢問在密鑰鏈中存儲密碼是否安全,以及是否可以安全地通過HTTPS爲每個操作連續發送密碼。 – BigCheesy 2013-04-13 18:11:11

相關問題