API 密钥通过请求 url 泄露,如何处理?

API key is revealed via request url, how to deal with it?

我见过类似 的问题,但我认为它不适用于我的用例。

我正在为我的应用程序(React 应用程序,从 NestJS 后端提供服务)使用 Firebase 身份验证并注意到一件事,它通过请求 URL 公开了 Google 云 API 密钥.当前的身份验证流程是:

  1. 前端使用 OAuth2 调用 Google Identity Platform 使用 Firebase SDK 检索登录信息(显示名称、ID 令牌等)
  2. 前端调用 NestJS API 以使用 Firebase Admin SDK 验证登录信息并创建仅 HTTP cookie 以保留身份验证状态。

据我所知,React 应用程序需要访问 API 密钥才能实现 Firebase。没有办法绕过该要求。即使密钥隐藏在 .env 文件中,API 密钥仍会通过网络选项卡显示。在某些情况下,如果我忘记处理 signInWithRedirect()(或任何其他 Firebase 函数)的异常,则会在控制台中显示错误(Uncaught Promise: requestUrl/apiKey="My Key"),所以情况更糟。

我不确定我是否误解了有关整个实施和身份验证流程的某些内容。如果是,请纠正我。如果没有,请告知如何解决此问题。

出现在 Firebase 的情况下,暴露 API 密钥就可以了。然而,这只是由于 Firebase 的工作方式, 而不是 ,因为公开 API 密钥通常是安全的。可以在此处找到更详细的讨论:

我使用的是 Google Identity Platform,不是 Firebase,但是 Google Identity Platform 也使用 Firebase 和 Firebase Admin SDK,所以我相信这是适用的。

这件事在official Firebase instruction video中也有提到。感谢用户 usr28765526 提到这一点。