当有人使用密码锁定设备时,有人可以帮助我如何授予从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];**
任何帮助都将不胜感激。
答案 0 :(得分:-1)
http://software-security.sans.org/blog/2011/01/05/using-keychain-to-store-passwords-ios-iphone-ipad/
“永远不要使用kSecAttrAccessibleAlways。如果您将用户数据存储在钥匙串中,可以安全地假设它应该受到保护。
通常,您应始终至少使用kSecAttrAccessibleWhenUnlocked来确保在设备锁定时无法访问数据。如果您必须在设备锁定时访问数据,请使用kSecAttrAccessibleAfterFirstUnlock。“