iOS数据保护核心数据不起作用

时间:2016-09-04 07:35:43

标签: ios swift core-data

我正在尝试为我的核心数据文件启用数据保护。这就是我所做的。

  1. 项目设置启用了功能中的数据保护。
  2. 修改后的持久存储协调器getter

    let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
    let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqlite")
    
    var failureReason = "There was an error creating or loading the application's saved data."
    do {
        try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: [NSSQLitePragmasOption : ["journal_mode" : "DELETE"], NSPersistentStoreFileProtectionKey : NSFileProtectionComplete])
    }
    
  3. 运行代码并在设备上安装应用程序。

  4. 下载了应用容器并打开了包内容,可以看到.sqlite文件
  5. 现已锁定设备
  6. 保持10秒钟,然后再次为同一个应用程序下载应用程序容器。 7.打开包内容,我仍然可以看到包内容和sqlite文件:(
  7. 如果这对我有帮助,我正在使用免费的配置文件。

    我在这做什么错?为什么这个.sqlite文件没有加密?

    请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:0)

由于设备所连接的计算机是受信任的计算机,因此即使设备被锁定,它也可以读取应用程序的容器。我知道有两种方法可以测试sqlite文件是否已加密:

1)越狱设备。然后通过SSH进入您的设备,并在设备锁定时尝试读取sqlite文件(即“ cat sqlite_file”)。如果文件已加密,则将无法读取。

2)您可以检查sqlite文件上的属性,并确保正确设置selected_unit_req属性:

rqst