保持firebase数据的安全

保持firebase数据的安全,firebase,firebase-realtime-database,firebase-authentication,firebase-security,Firebase,Firebase Realtime Database,Firebase Authentication,Firebase Security,所以我最不希望的是任何人访问不应该访问的数据库。我的应用程序上的用户创建了一个帐户,该帐户在我的数据库中有一个密钥和子项(一个易于访问的用户配置文件),它还创建了一个身份验证帐户。数据库规则声明只有经过身份验证的用户才能访问数据库。是否有可能让经过身份验证的人以某种方式访问数据库的其余部分(可能通过黑客攻击)?这是我第一个使用firebase的应用程序,我想确保用户信息得到保护。这取决于您的规则 如果规则是: // These rules require authentication { "

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

这取决于您的规则

如果规则是:

// 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。好的,我需要使用与你在答案中的第二个规则集类似的东西。现在我的应用程序有了用户类型(用户管理员所有者),每个业务都有一部分数据,数据库中有一个单独的部分,包含所有用户的列表。我如何根据用户角色限制用户可以访问的数据?