如何在设备锁定时授予从PDkeychain读取和写入数据的权限

时间:2014-04-10 02:42:33

标签: ios keychain

当有人使用密码锁定设备时,有人可以帮助我如何授予从Keychain读取或写入数据的权限吗?此外,如果密钥更改,现有市场用户在更新最新版本时是否会遇到问题?

我发现通过传递键值"(_ 网桥ID)kSecAttrAccessibleAlways,( _bridge id)kSecAttrAccessible,我们可以授权在设备锁定时从密钥链读取或写入数据&#34 ;.但是通过改变这个词典,现有用户在阅读或写入数据方面会有任何问题吗?

市场构建中的现有代码 -

NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:(id)kCFBooleanTrue, kSecReturnData,kSecClassGenericPassword, kSecClass,
                       key, kSecAttrAccount,
                       [self serviceName], kSecAttrService,
                       nil];

更新代码 -

NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:(id)kCFBooleanTrue, kSecReturnData,kSecClassGenericPassword, kSecClass,
                       key, kSecAttrAccount,
                       [self serviceName], kSecAttrService,(__bridge id)kSecAttrAccessibleAlways,(__bridge id)kSecAttrAccessible,
                       nil];**

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:-1)

http://software-security.sans.org/blog/2011/01/05/using-keychain-to-store-passwords-ios-iphone-ipad/

“永远不要使用kSecAttrAccessibleAlways。如果您将用户数据存储在钥匙串中,可以安全地假设它应该受到保护。

通常,您应始终至少使用kSecAttrAccessibleWhenUnlocked来确保在设备锁定时无法访问数据。如果您必须在设备锁定时访问数据,请使用kSecAttrAccessibleAfterFirstUnlock。“