2017-09-22 217 views
0

好吧,让我们说我的手机上有一个应用程序,它使用数据库(SQLLite/RealmDb等)存储应用程序使用的数据,然后一些不良实体(黑客)获取我的无根电话和以某种方式获得访问权限。你可以在手机之间移动移动sql数据库并使用它吗?

如果实体可以反编译代码并创建自己的应用程序(或只是需要数据的部分)来使用数据库,那么他可以将数据库从我的设备移动到另一设备上(或我的另一个应用程序设备,它并不重要),然后访问/使用数据库中的数据(数据是否被加密)?

举例来说,只是获得加密的数据并直接发送到休息API并获取有效的响应。

是否存在对移动数据库的“篡改连接”,因此无法在其他设备/应用程序沙箱中使用?它可能与数据库和操作系统不同。

Desclaimer: 我所有的应用程序和API的使用JWT令牌和服务器端验证和对HTTPS的顶部钉扎到证书服务器,所以我不要求最佳实践的安全性。看看这个问题更像是一个需要我出售安全管理的问题,我试图回答“可以这样做吗?”

+0

如果他们可以获得根访问权限并保留数据,那么只需转到** data/data/bases_package_name/databases **并复制该文件,然后使用sqlite管理器来查看和操作数据库即可。无论如何,这是SQLite的。我经常将SQLite数据库复制到Windows并使用SQLite管理器(浏览器扩展),甚至有时操纵数据库并反转进程,然后在设备上获取更改的数据库(不知道IOS)。 – MikeT

回答

0

Realm和SQLite都支持单个文件。所以如果黑客可以访问文件系统。他们可以复制文件并随心所欲地做任何事情,包括阅读和修改文件。

如果您的应用程序附带预先填充的数据库,那么他们可以反编译应用程序并将其复制出来。

如果您担心从设备泄漏数据,可以通过加密本地数据库来防止这种情况。 Realm对于Android和iOS都有in-built encryption,如果您包含SQLCipher,则SQLite支持它。

只要您的加密密钥没有存储在设备上,但是从本地登录派生或从服务器发送,那么拥有本地数据库应该100%安全,而不必担心数据泄露。

+0

SQLCipher的唯一问题是它是全部或没有。 – MikeT

+0

您会不会考虑为数据库随机生成加密密钥并将其存储在android keystore/ios钥匙串中? – Sturla