Firebase 浏览器密钥 API 限制

Posted

技术标签:

【中文标题】Firebase 浏览器密钥 API 限制【英文标题】:Firebase browser key API restrictions 【发布时间】:2019-06-28 17:58:53 【问题描述】:

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

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

所以我采取了两个额外的步骤来保护密钥:

    添加了 HTTP 引荐来源网址限制以仅允许来自我的域的请求。 在允许的 API 列表中添加了 Identity Toolkit API。通过实验,我发现 Firebase Auth 和 Firestore 可以正常工作。 添加了 令牌服务 API。这是刷新令牌工作和保持身份验证所必需的。

我的问题主要与第 2-3 点有关。 Firebase 的各种组件需要启用哪些 API 才能在网络上运行?

【问题讨论】:

我想知道他们是否在后台神奇地做了自己的“限制”?您是否能够使用公共浏览器密钥来调用其他 API,例如谷歌地图地理编码? @ahong 不,他们没有,是的,我能够使用公共浏览器密钥来调用其他 API。 【参考方案1】:

我也启用了这两个 API,但我使用 Metrics Explorer 根据实际流量查看各种 Firebase 创建的密钥一直在使用什么。

在 GCP 中,

转到监控 -> 指标资源管理器 点击图表上方时间范围内的6W 资源类型,开始输入consumed_api并选择它 指标,选择请求计数 Group By,输入credential_id,选择它,然后输入service,然后选择它 聚合器,选择sum

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

如果结果太嘈杂,您可以使用过滤器按credential_id 过滤。

【讨论】:

【参考方案2】:

默认情况下key没有限制,所以容易出现配额 窃取为该项目启用的每个 API。

这确实是可能的,我能够制作 e。 G。使用自动生成的 Firebase API 密钥调用 Google Maps API。

这种预先配置的行为肯定是出乎意料的,我现在正在按照原始问题中描述的额外步骤尝试限制。

【讨论】:

以上是关于Firebase 浏览器密钥 API 限制的主要内容,如果未能解决你的问题,请参考以下文章