繁体   English   中英

适用于 Android 的 Firebase 实时(在线)数据库的安全性如何?

[英]How Secure is Firebase Real-time (Online) database for Android?

我最近刚刚开始使用 Google 的firebase作为 android 应用程序数据的在线集中式数据库(从使用本地 sqlite 迁移)。

作为 firebase 的新手,我想问一下 android 的 firebase 在线数据库有多安全?

从以下线程中阅读,是否真的可以访问 google-services.json 的任何人都可以插入和修改我的 firebase 数据库中的在线数据?

我所关注的人谁怎样才能获得一个反编译的apk的配置文件(谷歌services.json)可以使用它在自己的Android项目,比如,创建具有类似的包名的Android应用程序,推动恶意数据或删除我的火力数据库。

如果有新的聪明的解决方法可以使在线数据库更安全,您能否提供建议?

到目前为止,为了增加安全性,我已尝试:

  1. 将 firebase 的数据库规则编辑为:

 { "rules": { ".read": "auth != null", ".write": "auth != null" } }

  1. 将 firebase 电子邮件/密码身份验证添加到我的应用程序以控制登录。

    但是,我发现即使没有身份验证功能,新创建的应用程序仍然可以将数据推送和修改到在线 firebase 数据库中,只需使用“被黑”的 google-services.json。

感谢您的意见和建议!

欢迎享受有效的两层系统带来的乐趣。 您可以采取多种措施来保护您的数据——但不是免费的。

首先是一些事实:

  1. 拥有数据库凭据的人可以访问它
  2. 如果应用程序可以访问数据,那么任何可以从您的应用程序中提取数据的人都可以有效地使用您的数据库凭据

有一些反措施可以提高攻击者的门槛,但坚定的(或幸运的)攻击者可以获得访问权限。 如果他有访问权限,则很难防止他造成损害,因为例如更改数据库凭据也会强制您的所有用户进行更新。

你能做的是

  1. 决定保护数据是不值得的努力和你/你的管理可以用风险住(但后来你有一个decission确实做到了)

  2. 像您一样使用firebase ACL 要创建用户特定的“仓库”,请使用每个用户节点(见下文,这里不会呈现代码)。 配置发生在控制台中

  3. 在服务器上构建业务逻辑并将所有凭据放在那里。 这将确保您拥有完全控制权

  4. 防止应用程序以明文形式读取数据。 使用公钥算法来加密数据。 将私钥保存在必须读取数据的系统上。 然后应用程序无法读取纯数据(但仍然例如找出您拥有多少以及变化率是多少)。 这也不会阻止数据的操纵或删除。

示例 ACL:

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
  "rules": {
"users": {
  "$uid": {
    ".read": "$uid === auth.uid",
    ".write": "$uid === auth.uid"
      }
    }
  }

一些 Firebase 项目方法,例如常规的 Android 和 Web (JS) 快速入门项目,存在将 Firebase 项目的访问权限和凭据共享给用户的风险。 通过正确定义和构建安全规则,保护 firebase 数据的唯一方法(如果不能选择对前端客户端隐藏 firebase 凭据)确实如@Jens 所提议的那样。 恶意黑客将很难使用您的数据,即使他们可以访问您的项目凭据。 可以在此处找到更多信息说明:

作为对 firebase 项目凭据公开的快速更新,我发现使用后端脚本与 Firebase 通信将消除这种担忧,因为脚本和代码实现对用户是隐藏的。 Firebase 为各种帮助程序库(例如 NodeJS、PHP、Python 等)上的REST API提供了出色的支持。 使用 REST API 加上安全规则将使我们的 Firebase 凭据和数据更加私密和安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM