我是否应该将 google-services. json (来自 Firebase)添加到我的存储库中?

我刚和 Firebase 签约,创建了一个新项目。Firebase 问我要我的应用程序域名和一个 SHA1调试密钥。我输入这些细节,它生成了一个谷歌服务。Json 文件添加到我的应用程序模块的根。

我的问题是。将 json 文件添加到公共(开源) repo。是应该保密的东西吗,比如 API 密钥?

43926 次浏览

google-services.json文件是:

Firebase 通过一个配置文件管理所有 API 设置和凭据。
该文件在 Android 上命名为 google-services.json,在 iOS 上命名为 GoogleService-Info.plist

将其添加到 .gitignore而不将其包括在公开回购协议中似乎是有意义的。
这在 第二十六期中已经讨论过了,关于 google-services.json包含哪些内容有更多的细节。

例如,像 googlesamples/google-services这样的项目就有 在它的 .gitignore
虽然,作为 斯蒂芬评论,这个线程确实提到了

对于库或开源示例,我们不包括 JSON 文件,因为其目的是用户插入他们自己的代码,将代码指向他们自己的后端。
这就是为什么我们在 GitHub 上的大部分回购文件中都看不到 JSON 文件的原因。

如果“数据库 URL、 Android API 密钥和存储桶”对您来说不是秘密,那么您可以考虑将该文件添加到您的回购文件中。
正如在“ Google-services. json 对黑客安全吗?”中提到的,这并不是那么简单。

鲍埃里克在 评论中问道:

在那篇文章中,他说:

JSON 文件不包含任何超级敏感的信息(如服务器 API 密钥)

但是 google-services.json确实有一个条目叫做 api_key
这个 API 密钥和 server api key密钥不一样吗?

威利•查尔默斯三世(Willie Chalmers III)指出了“ Google-services. json 对黑客安全吗?”,并补充称:

是的,那个 API 密钥不是服务器 API 密钥,它永远不应该是公共的,所以如果您的 google-services.json可以被其他人看到,那也没关系。

无论如何,您仍然应该限制如何在 GoogleCloud 控制台中使用您的客户端 API 密钥。


正如 评论中的 Puzz所指出的,也参见“ 向公众公开 Firebase apiKey 是否安全

在这个答案中,Frank Van Puffelen提到:

更新(2021年5月) : 多亏了名为 火库应用程序检查的新功能,现在实际上可以限制对 Firebase 项目中后端服务的访问,只有那些来自 iOS、 Android 和在该特定项目中注册的 Web 应用程序的访问。

这个的讨论,似乎你可以把它添加到一个公共回购。它的内容以 APK 的形式结束,并且可能很容易提取。

回复@Yaron 最后一条评论。 基于我有限的知识和对火场的使用。

在 firebase 项目控制台(在那里你下载谷歌服务。Json)并获取 API 密钥。你把应用程序的 ID,并提供一个 SHA 证书。 因此,要使请求工作,它需要来自与相同的应用程序 ID 和证书对应的应用程序。

所以在代码库中没有要隐藏的2end 键。后端验证。

它说这个文件的内容在 Firebase 文档是公开的:

The content of the Firebase config file or object is considered
public, including the app's platform-specific ID (Apple bundle ID or
Android package name) and the Firebase project-specific values, like
the API Key, project ID, Realtime Database URL, and Cloud Storage
bucket name. Given this, use Firebase Security Rules to protect your
data and files in Realtime Database, Cloud Firestore, and Cloud Storage.

官方文件说这个文件不包含任何密钥。

检查 https://firebase.google.com/docs/android/setup#add-config-file

enter image description here