4

Firebase Auth 提供了一个 REST API 来创建/delete/edit auth 用户。由于 API 密钥不是私有的,任何人都可以使用该 API。

例如创建新用户的端点是公开可用的,并且不能禁用 AFAIK。

在我看来,这是一个糟糕的情况,例如,攻击者可以通过此端点创建许多对我们系统来说不是有效用户的用户。攻击者可以阻止无法创建有效帐户的客户的有效电子邮件地址。

如果攻击者知道用户 ID,他甚至可以删除身份验证用户。

我们添加了用户声明(只能通过 Admin API 而不能通过公共 API 设置),以确保只有我们创建的用户才能访问我们的系统,但这意味着我们需要付出很多努力才能定期删除用户而不是通过我们的系统创建。

是否计划通过AppCheck保护 FirebaseAuth以仅允许经过验证的应用程序访问 auth api?

4

1 回答 1

4

在这一点上,我想说这不太可能,因为与应用检查所保护的 API 相比,这种滥用被认为是低风险的。

面向公众的 Firebase 身份验证 API 是有速率限制的,特别是 Web API 必须来自您允许的身份验证域。但是,该平台的主要卖点之一是能够处理许多并发用户。

  • 100个账户/IP地址/小时可创建
  • 10个账号/秒可删除
  • 可以处理 1000 个请求/秒,1000 万个请求/天的公共 API 跨项目

使用 Admin SDK 可以绕过每个 IP 地址的限制(受限于 500 个请求/秒的限制)。如果您预计需求会激增(例如您提供黑色星期五促销),您也可以从 Firebase 控制台暂时提高这些限制。

只有用于创建用户的 Firebase Auth API 是“公开的”,但如上所述受到限制。

编辑、删除、更新用户的详细信息,元数据和帐户本身都是特权操作 - 您必须经过适当的身份验证才能进行更改。对于从客户端设备连接的用户帐户,您必须在大约 5 分钟内登录才能更新/删除您自己的帐户。使用 Admin SDK 时,请求使用服务帐户的凭据进行身份验证,该凭据授权它代表用户或系统进行更改。

如果您的系统以这种方式被滥用,您可以联系 Firebase 支持。

于 2021-11-22T12:20:00.857 回答