Android 中的 Firebase 本地数据库有多安全?

Posted

技术标签:

【中文标题】Android 中的 Firebase 本地数据库有多安全?【英文标题】:How Secure is Firebase Local Database in Android? 【发布时间】:2016-09-30 11:24:33 【问题描述】:

我计划改用 Firebase 作为我的 android 应用程序的本地和在线数据库。根据文档,Firebase 首先将更改存储到本地数据库,然后在网络可用时将其推送到在线数据库。

在我的应用程序中,我会将一些关于用户的非常敏感的数据放入数据库中。所以这是我的问题,

    本地 Firebase 数据库的安全性如何?

    一个好心的黑客使用正确的工具破解它有多难?

    它只是像在线数据库一样的简单 JSON 文件,任何有 root 访问权限的人都可以打开吗?

谢谢。

【问题讨论】:

由于 firebase 文档没有说明其他任何内容,我认为本地文件只是纯文本数据库文件。任何具有 root 访问权限的人都可以读取它并提取所有数据。顺便说一句:如果数据如此敏感,您确定要将其以明文形式存储在 Firebase 服务器上吗? 我已经对数据进行了加密,但问题是我还需要将用于加密的密钥存储在数据库中。这不是违背目的吗?这里最好的方法是什么? 【参考方案1】:

一般来说,Firebase 实时数据库可以离线使用。但是,期望应用程序大部分时间都应该连接,并且离线时发生的数据库更改将在连接时同步。 100% 离线使用并不是真正受支持的用例,因为规范数据存储在服务器上。

数据库的本地副本限制为(10MB,至少在 Android 上是这样)。如果您打算在离线时写入超出此限制的数据库,它将逐出部分缓存数据,以便为您添加的任何内容腾出空间。然后,在应用重新上线之前,您将无法再读取这些被驱逐的值。更糟糕的是,管理越来越多的要在重新上线时应用的写入列表会给应用程序带来负担,因此您不想在离线时计划大量写入。

此外,如果您为数据库定义了权限或验证,则只能在服务器上检查这些权限或验证。因此,如果您正在对本地缓存进行离线写入并且不再有活动的侦听器,那么您可能永远不知道这些写入是否失败。

由于这些警告,最好不要将 Firebase 实时数据库视为“离线”数据库。最好将其视为一个“同步”数据库,在存在连接时主动同步到服务器。

【讨论】:

以上是关于Android 中的 Firebase 本地数据库有多安全?的主要内容,如果未能解决你的问题,请参考以下文章

recyclerview的onBindViewHolder内的Android Firebase监听器

Unity 中的 Firebase - 禁用持久性

Android:通过我的应用程序使用一个 Firebase ChildEventListener

Firebase 以 firebase:authUser 的形式检索存储在本地存储中的用户数据:

适用于 Android 的 Firebase 推送通知

Android中的Firebase数据描述排序