核心数据和数据保护
Posted
技术标签:
【中文标题】核心数据和数据保护【英文标题】:CoreData & Data Protection 【发布时间】:2016-12-21 00:05:27 【问题描述】:所以我正在开发一个在本地使用CoreData
框架存储用户信息的应用程序。信息可能很敏感,所以我在考虑如何保护存储到数据库中的信息。在 Xcode 仪表板的功能选项卡下,我找到了这个数据保护开关:
有人知道这是怎么工作的吗?如果我打开开关,Xcode 会自动编码我的CoreData
文件吗?或者如何对我的CoreData
文件实施这种保护?
感谢您的时间和耐心。谢谢!
【问题讨论】:
您是否尝试过查看 Apple 的文档?您需要哪些方面的帮助? @Tom Harrington @Tom Harrington 是的,我浏览了 Apple 关于数据保护的文档,但它非常简短,没有提到任何有用的方法或如何实施。我现在对如何在我的 CoreData 数据库上实现 ios 的数据保护感到困惑~ 【参考方案1】:根据 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)
请参阅此link 以了解有关不同类型选项的更多信息。
【讨论】:
【参考方案2】:您找到了正确的位置,您必须打开目标功能窗格中的数据保护开关,以表明您要使用数据保护。根据Apple's documentation,这就足够了:
默认的保护级别是完全保护,其中文件 设备锁定时已加密且无法访问。你可以 以编程方式为您创建的文件设置保护级别 应用 [...]
它表明您可以以编程方式设置保护级别。如果您想这样做(我仍然这样做,以保存;),您应该在创建 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 快速帮助了解差异。
【讨论】:
感谢您的回复。因此,如果我理解这一点,只要我打开目标功能窗格中的数据保护开关,此应用程序中包含的所有文件都会被加密且无法访问。 但我仍然可以选择以编程方式更改保护级别。听起来打开开关对我来说已经足够了:D 是的。也许这就是文档如此简短的原因;)以上是关于核心数据和数据保护的主要内容,如果未能解决你的问题,请参考以下文章
Dataphin核心功能:安全——基于数据权限分类分级和敏感数据保护,保障企业数据安全