如何防止钥匙串项目不会添加到备份中?
Posted
技术标签:
【中文标题】如何防止钥匙串项目不会添加到备份中?【英文标题】:How to prevent that keychain items will not be added to the backup? 【发布时间】:2016-02-24 06:52:26 【问题描述】:如何防止钥匙串项不会添加到备份中?以及加密备份? 当 keychain (SecItem) item 配置如下图,那么这个 keychain item 可以备份和恢复到另一个设备。
let query = [
String(kSecClass) : kSecClassGenericPassword,
String(kSecAttrService) : "SecAttrService",
String(kSecAttrAccount) : "SecAttrAccount",
String(kSecValueData) : mobileId,
]
那么,如何防止那个keychain item不被备份呢?
【问题讨论】:
是否要备份?因为该问题表明您的项目未添加到备份中,并且您希望防止这种情况发生。但我认为你真正想要的是“不备份” 【参考方案1】:使用“ThisDeviceOnly”可访问性常量,最好是 kSecAttrAccessibleWhenUnlockedThisDeviceOnly :
https://developer.apple.com/library/ios/documentation/Security/Reference/keychainservices/#//apple_ref/doc/constant_group/Keychain_Item_Accessibility_Constants
【讨论】:
如果我理解正确,我们无法阻止备份项目。它们将被备份,但只会恢复到同一设备。 是的;从安全的角度来看,它几乎与“未备份”相同,因为没有设备(具有解锁备份所需的唯一密钥)就无法从备份中提取内容。【参考方案2】:只要不在app目录下的数据就不会备份这些数据,也有可以在文件夹中设置不备份的标志,类似下面试试
Can I add the Do not Back up for the "Document Directory" for iCloud
iOS - Flag entire Document directory as do not backup
【讨论】:
感谢您的回答,但您的回答不包括钥匙串项目备份。以上是关于如何防止钥匙串项目不会添加到备份中?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以更新钥匙串项目的 kSecAttrAccessible 值?
sh 将git密码短语添加到钥匙串中,这样就不会再次询问密码了