当前位置: 首页 > 知识库问答 >
问题:

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

郭易安
2023-03-14

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

我的规则(来自文档):

allow write: if request.auth != null;

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

所以,为了避免这个问题。如何检查给定的请求。啊。uid实际上是来自Firebase身份验证服务的吗?


共有2个答案

许胡非
2023-03-14

这套规则对我很管用。

service cloud.firestore {
 match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}
闻修筠
2023-03-14

请求。auth变量由服务器上的Firebase根据每次请求时从客户端发送的ID令牌自动填充。为给定的Firebase项目生成ID令牌需要您有权访问该项目的管理凭据。

这意味着,只要确保不公开共享项目的管理凭据,任何人都不能将自己的信息注入ID令牌,这就是请求。数据库中的auth对象实际上是安全的,不会被篡改。

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

 类似资料:
  • 我希望为Android应用程序构建一个SpringBootRESTAPI。一些特定于用户的资源应该受到OAuth2的保护。 我的问题是-我不想使用社交登录进行用户身份验证。我不想有我自己的用户数据库(SQL)与我自己的用户注册,允许用户使用用户名/密码登录。 我对Spring Boot还不熟悉,但是我已经在网上看到了很多例子,我可以看到Spring有很多有用的库用于用户处理和OAuth。 但是我似

  • 我很少使用jersey实现创建rest服务。出于安全考虑,服务可以由任何一个调用。所以我决定使用基于令牌的认证系统。我在spring security中编写了一个过滤器,它在每个请求到达服务器之前处理它。 创建了一个登录服务,这样用户就可以通过传递有效凭据的用户名和密码来调用该服务,它将生成访问令牌和到期日期,并将其保存在Hashmap和DB中,并作为响应返回给用户。 对于剩余的服务,用户必须传递

  • 我是Spring安全的新手,我想用数据库验证用户。我已经用jdbc创建了一个登录页面和一个身份验证提供程序,它检查用户是否存在于数据库中。但是我的代码没有这样做的问题是,它允许所有用户登录!我的代码怎么了?谢谢你的帮助。 这是我的安全会议。xml:

  • 我的Android应用程序中有Firebase身份验证。我的问题是如何在经过身份验证的用户(出现在Firebase控制台的选项卡)和数据库(选项卡)之间建立链接。 我需要通过中出现的将数据库中的数据与中的相关用户链接,并最终发送有关特定的查询,以获取

  • null /signup=>在我的数据库中注册用户,颁发令牌 /登录 /refresh_token null null null 我想要的是客户机V1的一致和兼容API。APIV1的任何现有客户端(应用程序)都应该能够向V1/Signupendpoint发送请求,并以与V2客户端相同的状态完成:在Firebase中创建用户帐户

  • 我正在研究使用JWT身份验证的Spring Security实现。我不确定如何检查用户角色并在方法级别获得经过身份验证的用户。我在网上看到这个例子: 我需要从JWT令牌中提取用户类型吗?还有其他方法可以实现吗?在我看来,仅使用是不完整的。 看起来这段代码是用来获得用户如果使用会话类型,我得到NPE。你知道对于JWT我如何才能成为用户吗? Github完整来源:https://Github.com/