提问者:小点点

我们如何在不设置规则的情况下保护Firebase实时数据库?


我正在开发一个firebase实时数据库应用程序。 它不需要身份验证就可以读取或写入数据。 但在firebase realtime database rules部分,我收到了一条警告消息:

您的安全规则被定义为公共的,因此任何人都可以窃取,修改或删除数据库中的数据

如何在不设置firebase数据库规则的情况下保护数据?

我的Android应用程序的一个主要要求是用户不需要身份验证(不需要注册/登录)。


共1个答案

匿名用户

如果您想在不要求用户使用凭据登录的情况下保护数据访问,可以考虑使用Firebase的匿名身份验证。 使用此提供程序,您只需以下一行代码就可以登录用户:

FirebaseAuth.getInstance().signInAnonymously();

运行此程序后,您还不知道用户的任何详细信息。 但是您现在可以在对数据库的任何调用中标识用户,然后使用数据库安全规则中的信息,以确保用户只能访问授权给他们的数据。

有关此示例,请参阅关于在安全规则中利用用户信息的文档,其中包含以下示例:

例如,您的应用程序可能希望确保用户只能读写自己的数据。 在此方案中,您希望auth.uid变量与所请求数据的用户ID匹配:

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

要了解更多有关这方面的信息,我建议阅读有关保护数据访问的完整文档。