【问题标题】:Firebase says that my rules are insecure, why?Firebase 说我的规则不安全,为什么?
【发布时间】:2018-12-18 21:20:25
【问题描述】:

我收到了一封来自 Firebase 的电子邮件,通知我我的安全规则不安全,理由是:任何用户都可以读取/写入您的数据库。

这怎么可能,我在下面指定了.read.write规则。 我错过了什么?任何帮助将不胜感激。

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null",
      "venues-location": {
        ".indexOn": "g"
    },
      "users-compliments": {
        "$uid":{
          "$uid":{
            ".indexOn": ".value"
          }
        }
    },
      "users-invites": {
        "$uid":{
          "$uid":{
            ".indexOn": ".value"
          }
        }
    },
    "users-location": {
        ".indexOn": "g"
    }
  }
}

【问题讨论】:

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


    【解决方案1】:
    ".read": "auth != null",
    
    ".write": "auth != null",
    

    以上这些规则是默认规则。根据 firebase documentation 他们允许对您的应用程序的经过身份验证的用户进行完全读写访问。如果您希望数据对您应用的所有用户开放,但又不想向全世界开放,它们会很有用

    在启动应用之前正确配置这些规则至关重要,以确保您的用户只能访问他们应该访问的数据。

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

    下面是一个规则示例,该规则将经过身份验证的用户授予对 /users// 的写入权限,其中是通过 Firebase 身份验证获得的用户 ID。

    {
      "rules": {
        "users": {
          "$uid": {
            ".write": "$uid === auth.uid"
          }
        }
      }
    }
    

    【讨论】:

    • 感谢您的建议并为我指明正确的方向。 doco 链接看起来很有帮助。问题是:应用您的建议是否可以解决我从 Firebase 收到的安全问题?
    • 亲爱的@Roggie,如果(您希望每个用户都能够读写){ //您的代码很好 }else{ //使您的数据更安全,这完全取决于您的商业模式通过应用上述//提到的规则来允许特定用户}
    • 在我的数据库模型中,我有一个名为 venues 的根节点,每个子节点都代表一个场地对象,更改为上面建议的规则结果会导致我的 tableview 上没有显示任何场地。这是否意味着我需要为venues 和任何其他父节点添加另一个安全规则?
    • { "rules": { "venues": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }
    【解决方案2】:

    "auth != null" 还不够。这意味着任何经过身份验证的人都可以读/写另一个用户的数据。您可能想要添加如下内容: ".write": "auth.uid == $uid"$uid 节点下。 只允许经过身份验证的用户访问他们自己的数据,而不是其他用户的数据。

    【讨论】:

    • 然而,并非所有用户都可以读/写数据,只要他们经过身份验证。在我的情况下,很少有用户可以访问该应用程序并拥有所有相同的访问范围和权限,因此在我的情况下,默认规则非常好。我应该简单地忽略警告信息吗?可能会发出此警告,因为通常应用程序有更多限制性需求(只有所有者可以编辑自己的数据)。
    • @Francesco 我也有警告我应该忽略它吗?
    • 这取决于您的应用程序的范围和重要性。就我而言,这是一个宠物项目,因此用户之间没有共享真正敏感的数据。但如果这不是你的情况,我会尝试进一步调查而不是忽略它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2022-01-16
    • 2021-07-14
    • 2016-06-27
    • 1970-01-01
    相关资源
    最近更新 更多