我在我的应用中创建了一个新的数据库文件。当我启动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复制的文件?我想不会。
答案 0 :(得分:0)
通过iOS上的NSFileProtectionComplete进行文件保护依赖于具有Pin设置的设备。
答案 1 :(得分:0)
数据仅在设备锁定时加密。以下是保护级别:
无保护 - 文件未在磁盘上加密。
完成 - 当设备被锁定时,文件已加密且无法访问。
除非已经打开,否则完成 - 文件已加密。设备锁定时无法访问已关闭的文件。用户解锁设备后,您的应用可以打开文件并使用它。但是,如果用户在文件打开时锁定设备,您的应用可以继续访问它。
完成首次登录之前 - 文件已加密且无法访问,直到设备启动并且用户已将其解锁一次为止。
请参阅Apple文档(滚动到)Protecting Data Using On-Disk Encryption