Firebase浏览器密钥API限制

18

创建新项目时,Firebase 会自动生成浏览器 API 密钥,该密钥在 GCP API 凭据 中。这是在 Firebase Web 客户端 SDK 中设置的相同 API 密钥,并且公开可用。

默认情况下,该密钥没有任何限制,因此容易被用于窃取每个启用了该项目的 API 的配额。令人惊讶的是,我在 Firebase 文档中没有找到有关保护此密钥的信息。

因此,我采取了两个额外的步骤来保护该密钥:

  1. 将 HTTP referrer 限制添加到仅允许来自我的域的请求。
  2. 身份工具包 API 添加到允许的 API 列表中。通过实验我发现这已足以使 Firebase Auth 和 Firestore 正常工作。
  3. 添加令牌服务 API。这对于刷新令牌的工作和保持身份验证很重要。

我的问题主要与第2-3点相关。要使 Firebase 的各个组件在 Web 上正常工作需要启用哪些 API?


我想知道他们是否在后台神奇地自己进行“限制”?您能否使用公共浏览器密钥调用其他API,例如Google Maps地理编码? - ahong
@ahong 不,他们不会,是的,我能够使用公共浏览器密钥调用其他API。 - Pranaya Tomar
2个回答

8

我也启用了这两个API,但是我使用了Metrics Explorer来查看Firebase创建的各种密钥在实际流量中使用的情况。

在GCP中,

  • 进入监控 -> Metrics Explorer
  • 在图表上方的时间范围中点击6W
  • 资源类型,开始输入consumed_api并选择它
  • 指标,选择请求计数
  • 按,输入credential_id,选择它,然后输入service,并选择它
  • 聚合器,选择sum

现在,图例应列出所有凭据ID及其在过去6周中使用的服务。您应该能够从服务中找到API。

如果结果太嘈杂,您可以使用筛选器按credential_id进行筛选。


2

默认情况下,密钥没有限制,因此对于启用了该项目的每个API来说,它容易被配额窃取。

确实可以这样做,我能够使用自动生成的Firebase API密钥调用Google Maps API。

这种预配置的行为肯定是出乎意料的,现在我正在根据原始问题中描述的额外步骤进行限制的实验。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接