我正在创建一个可可基础核心数据应用程序。我想保护sqlite数据库,防止将其从应用程序中读出来。怎么样?
答案 0 :(得分:0)
您可以使用密码算法加密数据库,并在应用程序中使用它时解密。您可以选择CommonCrypto或SecurityTransform。看看Cryptographic Services Guide Apple Dev-Docs。
所需的凭证可以安全地存储在OS X钥匙串中。
因此,用户可以按应用程序启动/登录解密数据库,并在休假或其他事情上对其进行加密。
另一种方法可能是硬编码凭证(可能不是一个好主意,取决于您希望应用程序使用的安全标准),并且每次读/写到数据库中时都会进行解密/解密,以便数据库本身没有加密,但其中的记录是。如果您的应用程序崩溃,那可能会更容错。
因此没有“正确”的方法来完成任务,这取决于您要归档的内容以及数据的安全性。
但是,无论你做什么,都不要在 NSUserDefaults 中保存任何凭据,这绝对是不安全的。
这就像是有一个安全的胸部,它的钥匙放在胸前。
答案 1 :(得分:0)
对于iOS方面,github上有Project iMas
- encrypted-core-data
。它也可能对Cocoa有所帮助。
该项目的目标是:
提供核心数据存储,用于加密持久存储的所有数据。除初始设置外,其使用情况与Core Data完全相同,可用于使用Core Data的现有项目。
在引擎盖下,他们使用SQLCipher并将coreData方法包装到sql中。因此,您获得了加密存储,但可以使用coreData语法进行访问。无需了解SQL语法。
该项目看起来很有希望。绝对值得一看。