1

我正在编写用户使用电子邮件+密码注册帐户的代码。我想将登录凭据存储在 IOS 应用程序中,然后用于用户进行的所有远程操作(创建订单、更新帐户信息等)。

使用 PDKeychainBindings 将密码存储在 IOS 钥匙串中然后将用户/通过 HTTPS 发送到服务器的每个请求是否安全?

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

4

2 回答 2

4

有两种方法:

1)您可以使用KeyChain: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 更安全。您可以通过加密您的密码和用户名使方法 2 更安全。

希望这可以帮助..

于 2013-04-07T18:01:03.100 回答
4

最安全的方法是不保存密码。通常,在第一次连接时,您将用户名和密码交换为永久授权令牌。

然后将此令牌保存到钥匙串中,所有其他服务器请求仅由该令牌授权。仅当令牌无效时才要求用户再次输入密码。(它是永久性的,所以它不应该过期,但它可以被服务器失效)。

于 2013-04-07T18:26:16.540 回答