首页 > 解决方案 > 如何通过在“官方”身份验证数据库中检查正确的用户 ID 来保护 Firebase

问题描述

我有用户,注册了 Firebase 身份验证的电子邮件功能。只有经过身份验证的用户才能写入我的 Firestore 数据库。

我的规则(来自文档):

allow write: if request.auth != null;

允许访问存在非空身份验证对象的每个请求。这似乎不是很安全。因为您可以对任何auth = {something: "hacker"}对象提出请求。

所以,要避免这个问题。如何检查给定request.auth.uid的是否真的来自 Firebase 身份验证服务?

标签: google-cloud-firestorefirebase-authenticationfirebase-security

解决方案


request.authFirebase 根据随每个请求从客户端发送的 ID 令牌在服务器上自动填充该变量。为给定的 Firebase 项目创建 ID 令牌需要您有权访问该项目的管理凭据。

这意味着,只要您确保不公开共享项目的管理凭据,没有人可以将自己的信息注入 ID 令牌,而request.auth您数据库中的对象实际上是安全的,不会被篡改。


您问题中的规则限制了可以写入数据,因为用户需要登录到 Firebase 身份验证才能写入。您通常还希望通过控制访问(例如,只让他们访问自己的数据)和验证他们写入的数据限制用户可以执行的操作。


推荐阅读