API 密钥通过请求 url 泄露,如何处理?
API key is revealed via request url, how to deal with it?
我见过类似 的问题,但我认为它不适用于我的用例。
我正在为我的应用程序(React 应用程序,从 NestJS 后端提供服务)使用 Firebase 身份验证并注意到一件事,它通过请求 URL 公开了 Google 云 API 密钥.当前的身份验证流程是:
- 前端使用 OAuth2 调用 Google Identity Platform 使用 Firebase SDK 检索登录信息(显示名称、ID 令牌等)
- 前端调用 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 提到这一点。
我见过类似
我正在为我的应用程序(React 应用程序,从 NestJS 后端提供服务)使用 Firebase 身份验证并注意到一件事,它通过请求 URL 公开了 Google 云 API 密钥.当前的身份验证流程是:
- 前端使用 OAuth2 调用 Google Identity Platform 使用 Firebase SDK 检索登录信息(显示名称、ID 令牌等)
- 前端调用 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 提到这一点。