【问题标题】:Firebase Security Rules for a data sharing app数据共享应用的 Firebase 安全规则
【发布时间】:2021-01-29 06:24:49
【问题描述】:

我正在开发一个具有共享功能的简单的 react-native To-do 应用程序。我正在使用 Firebase Storage 进行存储和共享。但是,我是 Firebase 的初学者,不明白如何继续。我的要求如下

  1. 每个用户都可以添加/删除/编辑自己的数据库条目。
  2. 用户 A 应该能够与用户 B 共享他们的一些待办事项。共享可以是 viewedit 模式(就像 Google 云端硬盘文件一样)。
  3. 永久允许用户 B 查看所有未来 viewedit 模式的任何新待办事项的选项。基本上,允许或禁止用户 B 查看数据的选项。

我的尝试: 子弹1可以简单地实现

// 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"
      }
    }
  }
}

source

对于第 2 点和第 3 点,我计划让所有用户都可以访问一个单独的 JSON 文件。因此,当用户 A 向用户 B 授予 edit 对其部分数据的访问权限时,用户 B 的 JSON 文件应使用 A 的 uid 进行更新。我无法为此编写安全规则,因为我不知道我们是否可以编写规则以从 JSON 文件中获取数据。另外,我认为这种方法不是很好,因为一些攻击者可能会用垃圾条目淹没用户 B 的 JSON 文件,实际上也可以删除现有条目。

如能帮助您为 Firebase 存储实现这种类似 Google 云端硬盘的共享功能,我们将不胜感激。谢谢!

【问题讨论】:

标签: android firebase react-native


【解决方案1】:

您可以允许谁可以在规则中写入或读取特定路径 如果您的数据库看起来像这样:- 您的规则可能如下所示:-

     "rules": {
        "$uid":{
          "$todoid":{
            "todoitem":{
              ".read":"$uid == auth.uid || data.parent().child('sharedwith').child(auth.uid).val() === 'editor' || data.parent().child('sharedwith').child(auth.uid).val() === 'editor'",
                ".write":"$uid == auth.uid || data.parent().child('sharedwith').child(auth.uid).val() === 'editor'"
            }
          }
        }
  }

您可以关注这篇博文以更好地理解:- https://firebase.googleblog.com/2016/10/group-security-in-firebase-database.html

【讨论】:

    【解决方案2】:

    很高兴您尝试使用 Firebase 实时数据库规则。

    首先我猜你以不同的方式理解规则的概念。 firebase 中的规则不是为拥有用户特定的数据控制而构建的。 这些规则用于向特定类型的用户授予特定数据访问权限

    例如:

    您可以将特定子级的 R/W 权限授予仅经过身份验证的用户。对于未通过身份验证的人,我们可以限制访问

    此规则选项卡的主要目的是避免第三方访问导致数据泄露

    要了解有关 Firebase 规则的更多信息,请观看给定的视频。链接

    https://www.youtube.com/watch?v=PUBnlbjZFAI

    您还可以查看此文档

    https://firebase.google.com/docs/database/security

    【讨论】:

    • 我希望你能找到规则的确切用法,并且你可以用这些来建立你的安全规则。如果您对这些仍有疑问,可以再次联系这里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2016-08-28
    • 2017-06-24
    相关资源
    最近更新 更多