【问题标题】:Keeping firebase data secure保持 Firebase 数据安全
【发布时间】:2016-11-30 18:10:52
【问题描述】:

所以我最不想要的是任何人访问不应该访问的数据库。我的应用程序上的用户创建了一个帐户,该帐户在我的数据库中具有密钥和子项(易于访问的用户配置文件),并且它还创建了一个身份验证帐户。数据库规则规定只有经过身份验证的用户才能访问数据库。经过身份验证的人是否有可能以某种方式访问​​数据库的其余部分(可能通过黑客攻击)?这是我第一个使用 firebase 的应用,我想确保用户信息受到保护。

【问题讨论】:

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


    【解决方案1】:

    这取决于您的规则

    如果规则是:

    // These rules require authentication
    {
      "rules": {
        ".read": "auth != null",
        ".write": "auth != null"
      }
    }
    

    这种规则允许您应用的经过身份验证的用户拥有完全的读写权限。换句话说,经过身份验证的用户可以访问数据库中的所有数据,而无需任何黑客攻击。

    如果你设置了类似这条规则的东西:

    {
      "rules": {
        "users": {
          "$user_id": {
            // grants write access to the owner of this user account
            // whose uid must exactly match the key ($user_id)
            ".write": "$user_id === auth.uid"
          }
        }
      }
    }
    

    它授予此用户帐户的所有者写入权限,但仅限此数据。

    这意味着您必须设置规则才能为数据中的每个节点获取想要的结果。

    【讨论】:

    • 如果规则是如果用户经过身份验证则允许读/写访问权限,他们将只被允许编辑应用程序允许他们编辑的内容?
    • @XvKnightvX 这不安全。如果您对数据有身份验证,则可以通过其他方式访问它们,例如只需拥有数据库的 url。
    • 好的,所以我需要使用类似于您在答案中的第二个规则集的东西。现在我的应用程序具有用户类型(用户管理员所有者),并且每个单独的企业都有一部分数据以及包含所有用户列表的数据库中的单独部分。我将如何根据用户角色限制用户可以访问的数据?
    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 2018-02-02
    • 2018-05-17
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2016-09-16
    • 2018-08-27
    相关资源
    最近更新 更多