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 限制的主要内容,如果未能解决你的问题,请参考以下文章

如果firebase没有身份验证,如何限制API密钥?

控制台中的 Firebase 无效 api 密钥错误

API 密钥 浏览器 API 密钥与此 API 一起使用时不能有引用者限制

API 密钥 浏览器 API 密钥与此 API 一起使用时不能有引用者限制

Firebase API 密钥限制不适用于 Android 应用程序包名称和 SHA1 指纹

使用GCP API密钥限制对特定GCP App Engine服务的访问?