如何在不验证(登录/注册)用户的情况下保护Firebase实时数据库



我正在开发一个Firebase Realtime数据库应用程序。在应用程序中,用户不想Authenticate。因此,我将规则作为公共

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

(用户无需注册/登录(。但在Firebase Realtime数据库部分,它显示为警告

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

那么,如何在不验证(登录/注册(用户的情况下保护数据?

如果您想在不要求用户使用凭据登录的情况下确保数据访问的安全,请考虑使用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"
}
}
}
}

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

相关内容

最新更新