7

我正在开发一个 iPad 应用程序,该应用程序将依赖于一个非常大的有价值信息数据库。我自己对这个设备不太熟悉(我没有个人 iPad,也没有在开发这个应用程序之外使用过)。用户无法在任何地方通过我的应用程序直接查看数据库中的数据。

用户是否有任何其他方式可以访问我的数据库中的数据(可能通过将设备插入计算机并通过 Xcode 或 iTunes)?如果没有,我一直在阅读有关越狱的文章,并且我已经看到这样做可以允许用户访问设备的文件系统,那么这会让他们看到我的数据库的内容吗?或者是否可以通过越狱并安装应用程序来查看越狱设备上的数据库文件(实际上这个问题表明为越狱设备开发“数据库阅读器”应用程序可能很容易)?

4

3 回答 3

6

如果数据库在那里,那么人们可以触摸它。这只是一个比高级用户多一点的问题。如果他们没有凭据进行身份验证,他们可能无法从数据库中读取数据,但是一旦您的硬盘中有数据库,破解它只是耐心和知识的问题.

这是适用于任何设备和操作系统的原则,而不仅仅是 iPad 和 iOS。如果您不希望您的用户弄乱您的应用程序使用的某些文件,您可以使用一个非常长的加密密钥对其进行加密。最终有人可能会破解该信息...您所能做的就是确保在您的应用程序过时之前他们将无法这样做。

否则,请将您的数据保存在人们无法触及的服务器中。

于 2013-08-20T19:40:39.967 回答
2

无论我多么努力地保护我的应用程序,我都是开发人员(不是黑客),只要代码或数据库在设备上(加密与否),我就会将数据视为公开数据。如果解密密钥被传递给手机并在手机上解密,那么也认为该数据是公开的。基本上你被搞砸了。放弃捍卫您的应用程序。然后开始构建更酷的东西,并在通过 Internet 发送数据时使用 HTTPS,这就是我所能要求的。保卫你的钥匙、API 代币、高分、硬币等是完全不可能的。是的,做一点尝试,但你的努力是徒劳的。每天,用于查看本地加密数据库、本地加密应用程序、查看混淆应用程序内部的公共黑客工具每天都在变得越来越好。你不能打败它。开发人员并不比黑客聪明。给最终用户一种虚假的安全感。就像锁你的房子,或者锁你的车,你能阻止有人闯入吗?不。解决它的唯一方法是建立一个大银行(又名服务器),在前台放一些柜员(又名云API),然后就可以了。

于 2016-12-03T03:12:20.920 回答
0

我不是 IOS 开发人员,但我知道 SQLite。您可以在 SQLite 中加密数据库 - 查找 sqlite3_key_v2() 文档。您的应用程序需要在内部拥有密码,但您可能会让黑客难以获得密码。不要使用静态字符串作为密码——取而代之的是使用一些字符串,然后以编程方式对其进行操作。这将使攻击者恢复密钥变得更加困难,尽管并非不可能。但它会增加一个数量级的复杂性。攻击者必须获得对数据库文件本身的访问权限,然后必须对您的应用程序进行逆向工程才能恢复数据库密码。

于 2016-12-03T03:59:39.933 回答