google-services.json可以免受黑客攻击吗?

ste*_*eaw 13 encryption android risk-analysis google-play-services

如果黑客反编译我的APK,他能否从这个文件中看到我的API密钥?我并不担心我的源代码库.我只是担心黑客能够以某种方式从我的APK中看到这个API密钥.我正在尝试加密此文件并在运行时解密它但有一些问题

fhs*_*lva 6

根据此处的Firebase 文档:

当您将应用连接到 Firebase 项目时,Firebase 控制台会提供您直接添加到本地项目中的 Firebase 配置文件 (Android/iOS) 或配置对象 (Web)。

  • 对于 iOS,您添加一个 GoogleService-Info.plist 配置文件

  • 对于 Android,您添加一个 google-services.json 配置文件

Firebase 配置文件或配置对象将您的应用与您的 Firebase 项目及其资源(数据库、存储桶等)相关联。

然后它将内容标识为公开:

内容被视为公开内容,包括您特定于平台的 ID(在 Firebase 控制台设置工作流程中输入)和特定于您的 Firebase 项目的值,例如您的 API 密钥、实时数据库网址和存储分区名称。

请记住,如果您使用实时数据库、Cloud Firestore 或 Cloud Storage,您仍然需要遵循 Firebase 描述的安全指南。

另请注意,尽管它们对您的应用程序是公开的,但不应在开源项目的公共存储库中提供这些文件。

  • 自从我添加了谷歌的信息“该内容被认为是公开的”以来,这增加了讨论。由于文件内容被认为是公开的,因此它回答了该文件可以公开的问题。至于为什么它不应该放在公共存储库上,这是一个不同的问题。克隆您的存储库的任何人都应该创建自己的文件来访问其 Firebase 帐户。因此,将此文件添加到公共存储库没有用,应该避免。 (4认同)

Jul*_*zul 5

Google插件的设置方式对您来说很难隐藏google-services.json文件的内容。唯一可行的方法是重新实现自己插件已为您完成的工作,我不建议这样做。不幸的是,当您按照Google的意愿使用插件时,任何人只要解压缩APK即可轻松获取Firebase / Google API密钥。

但是,您可以通过配置谁可以使用它来防止对该API密钥的任何滥用。对于Android应用程序,您可以指定您的API密钥只能由已由给定密钥库和给定包名称签名的Android应用程序使用。

要配置这些限制,请遵循以下文档:https : //cloud.google.com/docs/authentication/api-keys#api_key_restrictions

除了限制API密钥外,如果您使用的是Firebase RTD / Firestore,还应确保在数据存储上配置安全规则。根据您的用例,您可以阻止匿名用户读取或写入数据库的各个部分。

如果您想了解更多详细信息,这是一篇很好的文章,我找到了有关如何在Android应用程序中保护API密钥的信息:https : //proandroiddev.com/developing-secure-android-apps-8edad978d8ba

  • Firebase 安全规则是最佳选择。如果有人想尝试以任何方式利用我的 API 密钥,那也没关系,因为现有的安全规则将阻止读/写访问 (3认同)

gre*_*f82 3

应用程序中的所有内容都可以以非常简单的方式读取,因此正如 Google 建议的那样,您必须避免将信息放入 apk 中,尤其是在使用 firebase/google 云消息传递或此类服务时的服务器密钥。

  • 我同意,但这对我来说很困惑...有没有办法可以屏蔽 google-services.json 中的键?并在运行时用其他值替换它们?或者该文件在构建期间使用?/ (5认同)