【问题标题】:Restrict Firebase database access to one Android app限制对一个 Android 应用的 Firebase 数据库访问
【发布时间】:2017-06-08 16:43:16
【问题描述】:

我正在开发一个读取 Firebase database 的 Android 应用程序。应用程序用户不会登录或修改数据库。所有应用程序用户都将查看相同的数据;我正在使用 Firebase 的实时更新功能。

理想情况下,我想限制对数据库的访问,以便只有我的应用程序可以读取数据。

我知道我可以做一些事情:

1.编写允许任何人阅读的安全规则,即

{
  "rules": {
     ".read": true,
     ".write": false
  }
}

缺点:任何人都可以阅读:(

2。编写allow authenticated users to read 的安全规则,然后将用户名和密码硬编码到应用程序中

{
  "rules": {
    "$user_id":{
       ".read": "auth.uid === $user_id",
       ".write": false
    }
  }
}

Con:在应用程序中硬编码用户名和密码似乎是非常错误的。另外,它实际上并没有锁定数据库,因为任何人都可以反编译应用程序,获取google-services.json 和硬编码的用户名/密码,然后编写自己的应用程序来共享我的包名。

谷歌搜索显示this,专门用于写作,this,表示“不”,但已经有几年了。

限制对数据库的访问的正确方法是什么?我是从错误的方向接近这个吗?

【问题讨论】:

  • 您链接的答案仍然是正确的:无法将您的 Firebase 数据库的访问权限仅限于您的应用程序。
  • 好的,谢谢@FrankvanPuffelen。
  • 你最后的选择是什么?
  • @michiyo 你知道怎么做吗?
  • 不,据我所知没有办法。

标签: android firebase firebase-realtime-database firebase-security


【解决方案1】:

当您将应用添加到 Firebase 项目时,您必须指定应用的 SHA1 证书,这样除了您之外,没有人可以访问您的数据。

【讨论】:

【解决方案2】:

3.使用FirebaseAuthsignInAnonymously()方法

参考:https://firebase.google.com/docs/auth/android/anonymous-auth

然后调整安全规则:

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

Con:多个帐户仅用于读取相同的数据

【讨论】:

  • 这似乎比 #2 更不安全,因为我将放弃隐藏/加密/混淆(不是很好,但总比没有好?)用户名和密码的能力。你能解释一下为什么你认为这更好吗?
猜你喜欢
  • 2017-12-29
  • 2016-02-05
  • 1970-01-01
  • 2016-10-18
  • 2018-09-16
  • 2011-05-04
  • 2018-08-18
  • 2015-12-30
相关资源
最近更新 更多