为什么SQLITE_OPEN_FILEPROTECTION_COMPLETE不保护我的文件?

时间:2014-09-11 16:47:44

标签: ios sqlite swift

我在我的应用中创建了一个新的数据库文件。当我启动iExplorer时,我能够将数据库文件复制到我的mac,然后轻松打开它。

为什么这样做不会保护数据文件,使其在我的应用之外无法读取?

var status = sqlite3_open_v2(dbFilePath.cStringUsingEncoding(NSUTF8StringEncoding)!, &_sqliteDB, SQLITE_OPEN_FILEPROTECTION_COMPLETE|SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE, nil)
if status != SQLITE_OK {
    return false
}

return true

Objective-C也是如此。刚刚在斯威夫特工作。

是否有可能通过解锁设备然后运行iExplorer获取文件,操作系统正在解密iExplorer复制的文件?我想不会。

2 个答案:

答案 0 :(得分:0)

通过iOS上的NSFileProtectionComplete进行文件保护依赖于具有Pin设置的设备。

答案 1 :(得分:0)

数据仅在设备锁定时加密。以下是保护级别:

  • 无保护 - 文件未在磁盘上加密。

  • 完成 - 当设备被锁定时,文件已加密且无法访问。

  • 除非已经打开,否则完成 - 文件已加密。设备锁定时无法访问已关闭的文件。用户解锁设备后,您的应用可以打开文件并使用它。但是,如果用户在文件打开时锁定设备,您的应用可以继续访问它。

  • 完成首次登录之前 - 文件已加密且无法访问,直到设备启动并且用户已将其解锁一次为止。

请参阅Apple文档(滚动到)Protecting Data Using On-Disk Encryption