用于 Firebase 身份验证的 Firebase AppCheck
Firebase AppCheck for Firebase Auth
Firebase Auth 向 create/delete/edit 身份验证用户提供 REST API。由于 API 密钥不是私有的,任何人都可以使用 API.
端点,例如创建新用户 public 仅可用并且不能 AFAIK 不被禁用。
我认为这是一个糟糕的情况,例如攻击者可以通过此端点创建大量用户,这些用户不是我们系统的有效用户。攻击者可能会阻止客户的有效电子邮件地址,这样就无法创建他们的有效帐户。
如果攻击者知道用户 ID,他甚至可以删除授权用户。
我们添加了用户声明(只能通过管理员 API 而不能通过 public API 设置)以确保只有我们创建的用户才能访问我们的系统,但定期删除不是通过我们系统创建的用户将意味着我们需要付出很多努力。
是否计划也通过 AppCheck 保护 FirebaseAuth 以仅允许经过验证的应用访问授权 api?
在这一点上,我认为这不太可能,因为与应用检查保护的 API 相比,这种类型的滥用被认为是低风险。
面向 public 的 Firebase Auth API 是 rate-limited,尤其是网络 API 必须来自您允许的身份验证域。然而,该平台的主要卖点之一是能够处理许多并发用户。
- 100 accounts/IP address/hour can be created
- 10 accounts/second can be deleted
- Can handle 1000 requests/second, 10 million requests/day for public APIs across a project
使用 Admin SDK 可以绕过每个 IP 地址的限制(受 500 requests/second 限制)。如果您预计需求会激增(例如,您提供黑色星期五促销活动),您还可以从 Firebase 控制台临时提高这些限制。
只有用于创建用户的 Firebase Auth API 是“公开的”,但限制如上所述。
编辑、删除、更新用户的详细信息元数据和帐户本身都是特权操作 - 您必须经过适当的身份验证才能进行更改。对于从客户端设备连接的用户帐户,您必须在大约 5 分钟内登录才能 update/delete 您的 自己的 帐户。使用 Admin SDK 时,请求使用服务帐户的凭据进行身份验证,授权它代表用户或系统进行更改。
如果您的系统以这种方式被滥用,请联系 Firebase 支持人员。
Firebase Auth 向 create/delete/edit 身份验证用户提供 REST API。由于 API 密钥不是私有的,任何人都可以使用 API.
端点,例如创建新用户 public 仅可用并且不能 AFAIK 不被禁用。
我认为这是一个糟糕的情况,例如攻击者可以通过此端点创建大量用户,这些用户不是我们系统的有效用户。攻击者可能会阻止客户的有效电子邮件地址,这样就无法创建他们的有效帐户。
如果攻击者知道用户 ID,他甚至可以删除授权用户。
我们添加了用户声明(只能通过管理员 API 而不能通过 public API 设置)以确保只有我们创建的用户才能访问我们的系统,但定期删除不是通过我们系统创建的用户将意味着我们需要付出很多努力。
是否计划也通过 AppCheck 保护 FirebaseAuth 以仅允许经过验证的应用访问授权 api?
在这一点上,我认为这不太可能,因为与应用检查保护的 API 相比,这种类型的滥用被认为是低风险。
面向 public 的 Firebase Auth API 是 rate-limited,尤其是网络 API 必须来自您允许的身份验证域。然而,该平台的主要卖点之一是能够处理许多并发用户。
- 100 accounts/IP address/hour can be created
- 10 accounts/second can be deleted
- Can handle 1000 requests/second, 10 million requests/day for public APIs across a project
使用 Admin SDK 可以绕过每个 IP 地址的限制(受 500 requests/second 限制)。如果您预计需求会激增(例如,您提供黑色星期五促销活动),您还可以从 Firebase 控制台临时提高这些限制。
只有用于创建用户的 Firebase Auth API 是“公开的”,但限制如上所述。
编辑、删除、更新用户的详细信息元数据和帐户本身都是特权操作 - 您必须经过适当的身份验证才能进行更改。对于从客户端设备连接的用户帐户,您必须在大约 5 分钟内登录才能 update/delete 您的 自己的 帐户。使用 Admin SDK 时,请求使用服务帐户的凭据进行身份验证,授权它代表用户或系统进行更改。
如果您的系统以这种方式被滥用,请联系 Firebase 支持人员。