我正在开发一个firebase实时数据库应用程序。 它不需要身份验证就可以读取或写入数据。 但在firebase realtime database rules部分,我收到了一条警告消息:
您的安全规则被定义为公共的,因此任何人都可以窃取,修改或删除数据库中的数据
如何在不设置firebase数据库规则的情况下保护数据?
我的Android应用程序的一个主要要求是用户不需要身份验证(不需要注册/登录)。
如果您想在不要求用户使用凭据登录的情况下保护数据访问,可以考虑使用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"
}
}
}
}
要了解更多有关这方面的信息,我建议阅读有关保护数据访问的完整文档。