【问题标题】:How much access will my users have to a SQLite Database I ship with my app?我的用户对我的应用附带的 SQLite 数据库有多少访问权限?
【发布时间】:2013-08-20 19:36:03
【问题描述】:

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

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

【问题讨论】:

  • 一般的 iDevice 用户不会知道数据库,如果你把它推到他们的鼻子上。如果需要,知识渊博的用户将能够轻松检索 db 文件并从 iDevice 中获取任何/所有内容。
  • 将任何重要的数据库信息保存在数据库服务器上 - 而不是 iPad。 iPad 用户可以访问存储在本地文件/数据库中的任何内容,尽管您可以考虑对这些信息进行加密。

标签: ios jailbreak


【解决方案1】:

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

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

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

【讨论】:

  • 啊,这就是我害怕的。我们在服务器上也有数据,但应用程序的要求之一是即使没有互联网访问,它也必须 100% 正常运行 - 这就是为什么我需要将设备上的所有内容存储在第一名。我对加密不是很熟悉,但看起来这是我需要开始寻找的地方。
  • 您需要的信息是 100% 保密的,还是只是一些您不希望用户搞砸的设置?
  • 你听说过Hopper吗?在加密的应用程序中存储数据库的问题是应用程序还必须知道如何解密它。如果应用程序知道怎么做,那么黑客也知道。但是,如果用户可以看到数据,他们也可以复制它(即使存储在服务器端)。所以,也许这是一场无望的战斗。只需使用一些基本的加密来阻止临时用户,然后就可以了。
  • @Renan,您的 cmets 似乎暗示该应用正在写入数据库并上传数据,但问题暗示该应用正在从数据库中读取数据。
  • 我同意大多数设备/操作系统都存在此问题。但是,我认为这对于 iOS 实际上更多是个问题,因为许多开发人员对 iOS 沙盒和 App Store 应用程序的限制存在错误的安全感。如今,越狱几乎不需要复杂的技术,并且使用非常简单的工具,您可以登录越狱手机,并检查文件系统上的任何文件。这是一个如此简单的攻击向量,我相信开发人员至少需要防范它。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多