【发布时间】:2012-10-07 23:00:45
【问题描述】:
这里有很多关于如何保护 iPhone 上的 SQLite 数据库的问题。这些问题主要是关于:
- 防止数据篡改;
- 使用用户应输入的密码保护用户的个人数据。
但我们的情况有点不同:
- 我们有一个使用 sqlite 数据库分发的应用程序;
- 该数据库包含公开可用的信息,但将所有这些信息收集到一个地方需要一些努力,而且我们不希望竞争对手有一种简单的方式来访问我们的数据;
- 所有数据库内容都可以通过应用程序 UI 获得,基本上应用程序的目的是很好地呈现这些数据。因此可以通过 UI 重新创建数据库,而每条记录大约有 50k 条记录 x 40 个字段,每个版本都会更新,因此手动抓取需要一些时间。也可能使用一些自动屏幕抓取来提取数据,但同样需要一些努力;
- 由于前面的一点,我们不是在寻找某种工业级数据保护,我们只是想防止任何人访问越狱设备上的应用程序包并从中复制数据库。
我认为我们需要对列内容进行某种花哨的混淆。可能我们应该使用应用程序独有的某个密钥来加密列,并且其他任何人都无法访问(如果 AppStore 中存在这样的密钥)。
感谢任何建议和最佳做法。
【问题讨论】:
-
仅供参考 - 您应用的任何合法用户都可以访问 iTunes 中的 ipa 文件。任何人都可以简单地解压缩 ipa 文件并查看包括数据库在内的所有文件。所以需要某种数据加密或混淆。在 Mac 上查看 ~/Music/iTunes/iTunes Media/Mobile Applications
-
您可能需要使用 SQLite 的加密版本 SqlCipher。当然,您需要一些方法来混淆密码/密钥,但这是一个不同的问题。 (在大多数情况下,加密单个列的安全性要低得多。)
标签: iphone ios security sqlite encryption