在反应应用程序中保护 Firebase API 密钥以使其无法公开访问的最佳方法是啥? [复制]

Posted

技术标签:

【中文标题】在反应应用程序中保护 Firebase API 密钥以使其无法公开访问的最佳方法是啥? [复制]【英文标题】:What is the best way to secure Firebase API keys in a react app so it is not accessible publicly? [duplicate]在反应应用程序中保护 Firebase API 密钥以使其无法公开访问的最佳方法是什么? [复制] 【发布时间】:2020-08-19 08:38:30 【问题描述】:

我目前有一个使用 Firebase 身份验证的 React 应用程序,并使用 Firestore 作为数据库。

我目前使用 Amazon 的 Amplify 服务部署了该应用程序。我的 Firebase API 密钥,包括数据库 URL 和 firebase 应用程序 ID,都作为环境变量添加到 AWS 控制台中。

当我检查公共包时,我可以看到所有 API 密钥都是公共的。

我的问题是:

这听起来对吗? 是否有处理这种情况的最佳实践? 我是否需要构建一个后端来处理这个问题?

【问题讨论】:

【参考方案1】:

您的 API 密钥、数据库 URL、应用 ID 等都是公开的。

根据firebase docs:

内容被视为公开内容,包括您的平台特定 ID (在 Firebase 控制台设置工作流程中输入)和值 特定于您的 Firebase 项目,例如您的 API 密钥、实时 数据库 URL 和存储桶名称。鉴于此,使用安全规则 保护您在实时数据库、Cloud Firestore 中的数据和文件, 和云存储。

您要确保与 Firebase 的连接安全的方式是使用 security rules。您可以添加自定义规则以确保您的数据库是安全的。

例如:您可以确保只有 userId 12345 有权创建、读取、更新和删除 userId12345 的记录。

【讨论】:

以上是关于在反应应用程序中保护 Firebase API 密钥以使其无法公开访问的最佳方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在客户端级别(而非最终用户级别)保护 Firebase REST API

如何使用 csurf 保护我的反应应用程序 api?

使用 Firebase 电子邮件/密码身份验证的 CSRF 保护

保护私有反应组件

在if块中反应不渲染组件

在本机反应中获取返回旧数据的 API