小编典典

向公众公开 Firebase apiKey 是否安全?

all

Firebase Web-App
指南
指出我应该将给定的内容apiKey放在我的
Html 中以初始化 Firebase:

// TODO: Replace with your project's customized code snippet
<script src="https://www.gstatic.com/firebasejs/3.0.2/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: '<your-api-key>',
    authDomain: '<your-auth-domain>',
    databaseURL: '<your-database-url>',
    storageBucket: '<your-storage-bucket>'
  };
  firebase.initializeApp(config);
</script>

通过这样做,apiKey每个访问者都可以看到它。

该密钥 的目的是什么,它真的 是公开的 吗?


阅读 141

收藏
2022-03-04

共1个答案

小编典典

apiKey配置片段中的 仅标识您在 Google 服务器上的 Firebase
项目。有人知道它不是安全风险。事实上,他们有必要知道它,以便他们与您的 Firebase 项目进行交互。每个使用 Firebase 作为后端的 iOS 和
Android 应用程序也包含相同的配置数据。

从这个意义上说,它与在同一片段中标识与您的项目关联的后端数据库的数据库 URL 非常相似:https://<app- id>.firebaseio.com. 请参阅此问题,了解为什么这不是安全风险:如何限制 Firebase
数据修改,包括使用 Firebase 的服务器端安全规则来确保只有授权用户才能访问后端服务。

如果您想了解如何确保对 Firebase 后端服务的所有数据访问都获得授权,请阅读有关Firebase
安全规则
的文档。这些规则控制对文件存储和数据库的访问,并在
Firebase 服务器上强制执行。所以不管是 你的 代码,还是其他人的代码使用你的配置数据,它只能做安全规则允许它做的事情。

有关 Firebase 将这些值用于什么用途以及您可以 为其中哪些设置配额的其他说明,请参阅 Firebase 文档关于使用和管理 API
密钥


如果您想降低将此配置数据提交给版本控制的风险,请考虑使用Firebase Hosting 的 SDK
自动配置
。虽然密钥仍会以相同的格式出现在浏览器中,但它们不会再被硬编码到您的代码中。


更新 (2021 年 5 月):借助名为Firebase App
Check
的新功能,现在实际上可以将对 Firebase
项目中后端服务的访问限制为仅来自在该特定项目中注册的 iOS、Android 和 Web 应用程序的访问.

您通常希望将其与上述基于用户身份验证的安全性结合起来,这样您就可以对使用您的应用程序的滥用用户提供另一个 保护

通过将 App Check 与安全规则相结合,您既可以防止滥用,又可以很好地控制每个用户可以访问的数据,同时仍然允许从客户端应用程序代码直接访问数据库。

2022-03-04