我正在开发一款iPad应用程序,它依赖于一个非常庞大的有价值信息数据库。我自己并不太熟悉这个设备(我没有个人iPad,也没有在开发这个应用程序之外使用过它)。用户无法通过我的应用程序在任何地方直接查看数据库中的数据。
用户是否可以通过其他方式访问我的数据库中的数据(可能是将设备插入计算机并通过Xcode或iTunes)?如果没有,我一直在阅读越狱,我已经看到这样做可以允许用户访问设备的文件系统,那么是否允许他们查看我的数据库的内容?或者通过越狱和安装应用来查看越狱设备上的数据库文件是否可能(事实上this question会建议为越狱设备开发“数据库阅读器”应用程序非常容易?)
答案 0 :(得分:5)
如果数据库在那里,那么人们可以触摸它。这只是一个不仅仅是高级用户的问题。如果他们没有进行身份验证的凭据,他们可能无法从数据库中读取数据,但是一旦您的硬盘中有数据库,它们就会再次出现,只需要耐心和知识来打入它
这是适用于任何设备和操作系统的原则,而不仅仅适用于iPad和iOS。如果您不希望用户弄乱您的应用使用的某个文件,您可以使用一个非常长的加密密钥对其进行加密。有人可能最终破解这些信息......你所能做的就是确保他们无论如何都要在你的应用程序过时之前就这样做了。
否则,请将您的数据保存在人们无法触及的服务器中。
答案 1 :(得分:1)
我是开发人员(不是黑客),无论我多么努力地保护我的应用程序,只要代码或数据库在设备上(加密与否)我就将数据视为公开。如果解密密钥被传递到电话并在电话上解密,那么也要公开考虑这些数据。基本上你搞砸了。放弃为你的应用辩护。并且只是开始构建更酷的东西,并在通过互联网发送数据时使用HTTPS,这就是我所能要求的。捍卫你的钥匙,api代币,高分,硬币等......实际上是不可能的。是的,尝试一下,但你的努力没有结果。每天公共黑客工具在本地加密的数据库中看到本地加密的应用程序,看到内部混淆的应用程序,每天都在变得越来越好。你无法击败它。期间,开发人员并不比黑客聪明。给最终用户一种虚假的安全感。它就像锁住你的房子,或锁定你的车,你能阻止某人闯入吗?不。解决这个问题的唯一方法是建立一个大型银行(也就是服务器),在前台安排一些柜员(也就是云端API),并完成它。
答案 2 :(得分:0)
我不是IOS开发人员,但我确实知道SQLite。您可以在SQLite中加密数据库 - 查找sqlite3_key_v2()文档。您的应用程序需要在内部拥有密码,但是您可以让黑客难以实现此目的。不要使用静态字符串作为密码 - 而是取一些字符串然后以编程方式操作它。这将使攻击者恢复密钥变得更加困难,尽管并非不可能。但它会增加一个数量级的复杂性。攻击者必须自己访问数据库文件,然后才能对应用程序进行反向工程以恢复数据库密码。