【问题标题】:Firebase Realtime Database - Rules with anonymous authenticationFirebase 实时数据库 - 具有匿名身份验证的规则
【发布时间】:2021-10-11 22:19:53
【问题描述】:

我正在使用 Firebase 实时数据库编写应用程序。 使用该应用程序,您可以创建投票,然后可以与任何人共享。 我使用 Firebase 匿名身份验证。

我不希望用户需要注册或登录。所以投票是完全匿名的。 实时数据库有以下规则:

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

据我了解,这意味着只有使用我的应用程序(为他们创建了匿名 ID)的人才能读取和写入数据库,对吗?

或者是否有任何其他方式可以在不使用应用程序的情况下访问数据库?

【问题讨论】:

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


    【解决方案1】:

    auth.uid != null 规则要求用户登录到您的项目。这与他们是否使用您的应用这样做无关

    任何人都可以在您的应用中找到配置数据,使用它来调用您的应用调用的相同 API,以这种方式在您的项目中创建用户,然后运行他们想要的任何代码(包括删除数据库的根目录) .

    要正确保护您的数据库,您必须确保规则完全允许您的代码执行的操作,仅此而已。如果您与应用代码一起开发规则,这通常是最简单的,而不是在所有代码都工作后尝试添加安全性。

    我的食谱通常是:

    1. 完全关闭数据库。
    2. 为一个用例编写代码。
    3. 查看失败,因为用户没有权限。
    4. 更改规则以仅允许该用例,而不允许其他任何用例。
    5. 返回第 2 步进行下一个用例。

    一个新选项是使用 Firebase App Check,它确实通过仅允许从您的应用访问来减少滥用的机会。您通常希望使用 App Check 进行广泛的保护,然后使用安全规则来细粒度地控制谁可以访问哪些数据。

    【讨论】:

    • 谢谢。 App Check 正是我正在寻找的那种功能!
    猜你喜欢
    • 2016-06-08
    • 2021-01-22
    • 2019-03-06
    • 2019-07-10
    • 2020-09-24
    • 2018-01-17
    • 2020-05-10
    • 2018-08-25
    • 2020-04-29
    相关资源
    最近更新 更多