2013-04-07 51 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

相关问题