如何在客户端保护 Firebase 身份验证? [复制]

Posted

技术标签:

【中文标题】如何在客户端保护 Firebase 身份验证? [复制]【英文标题】:How to secure Firebase Auth at the client side? [duplicate] 【发布时间】:2022-01-22 21:06:41 【问题描述】:

假设我有一个非常秘密的网站,仅供有限的人使用,例如我的家人,他们只能登录。我是通过 Firebase Auth 创建帐户的管理员。

然后,有人注意到我的前端代码中的 Firebase 凭据来初始化应用程序。

因此,“黑客”在他的本地主机上初始化了一个应用程序,并使用他的电子邮件地址创建了一个用户。现在他可以登录并can do all this other mentioned methods here 访问我的秘密网站,对吧……?如何预防?

【问题讨论】:

【参考方案1】:

我已经通过云功能创建了一个触发器,它监听用户创建并禁用新用户。

如果您创建新用户,则需要在 Firebase 控制台中启用该用户。

功能代码:

const onCreateHandler = (user: admin.auth.UserRecord, context: functions.EventContext) => 
  if (!user.email) 
    return null;
  

  return admin.auth().updateUser(user.uid, 
    disabled: true,
  );
;

export const authUserCreatedTrigger = functions.region(functionsRegion).auth.user().onCreate(onCreateHandler);

使用此方法用户/黑客注册后无法登录。

您还可以记录在 firestore 中创建的用户并向自己发送通知(电子邮件):)

您还可以实现一些存储在 firestore 或自定义用户声明中的自定义访问逻辑,您的前端可以使用这些逻辑来决定用户可以看到或看不到什么。

【讨论】:

以上是关于如何在客户端保护 Firebase 身份验证? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 身份验证和实时应用程序数据库如何保护自身?

如何在客户端中使用 Firebase Auth gmail 保护 NestJS 中的 API?

如何使用经过身份验证的 id 令牌和数据库规则保护 Firebase Cloud Function HTTP 端点?

在客户端级别(而非最终用户级别)保护 Firebase REST API

在没有 Firebase 身份验证的情况下保护 Firebase 数据库

如何在没有客户端身份验证的情况下从服务器验证 Firebase 用户?