因此,我正在开发一个应用程序,在本地使用CoreData框架存储用户信息。这些信息可能是敏感的,所以我正在考虑如何保护存储到数据库中的信息。在Xcode仪表板中,在capabilities选项卡下,我找到了数据保护开关:

有人知道这是怎么回事吗?如果我打开开关,Xcode会自动编码我的CoreData文件吗?或者如何在我的CoreData文件上实现这种保护?感谢你的时间和耐心。谢谢!
发布于 2016-12-21 09:48:15
您找到了正确的位置,您必须打开目标功能窗格中的数据保护开关,以指示您要使用数据保护。根据苹果的文档的说法,这应该足够了:
默认的保护级别是完全保护,在这种保护中,当设备被锁定时,文件是加密和不可访问的。您可以通过编程方式设置应用程序创建的文件的保护级别.
它声明您可以以编程方式设置保护级别。如果您想要这样做(我仍然这样做,要保存;),在创建persistentStoreCoordinator时应该使用适当的选项:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
@YES, NSMigratePersistentStoresAutomaticallyOption,
@YES, NSInferMappingModelAutomaticallyOption,
NSFileProtectionComplete, NSPersistentStoreFileProtectionKey, // <-- HERE
nil];
...
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
...
}NSFileProtectionComplete意味着
该文件以加密格式存储在磁盘上,当设备被锁定或启动时,无法读取或写入该文件。
您还可以使用NSFileProtectionCompleteUnlessOpen,请参阅Xcode快速帮助了解差异。
发布于 2019-01-18 11:51:06
根据Apple文档,当用户为设备设置活动密码时,将自动启用数据保护。系统在幕后加密和解密您的内容。这些过程是自动的,硬件加速。但是,我们仍然可以使用none、complete、completeUnlessOpen和completeUntilFirstUserAuthentication编程地设置文件保护级别选项。
let options = [NSMigratePersistentStoresAutomaticallyOption:true,
NSInferMappingModelAutomaticallyOption:true,
NSPersistentStoreFileProtectionKey: FileProtectionType.complete] as [String : Any]
try persistantStoreCoordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: storeURL, options: options)请参考此链接以了解有关不同类型选项的更多信息。
https://stackoverflow.com/questions/41253189
复制相似问题