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

时间:2017-08-04 13:46:52

标签: android encryption google-play-services risk-analysis

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

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

根据Firebase文档here

  

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

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

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

  •   
     

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

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

  

该内容被认为是公共的,包括平台特定的ID(在Firebase控制台设置工作流程中输入)和特定于Firebase项目的值,例如API密钥,实时数据库URL和存储桶名称。

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

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

答案 2 :(得分:0)

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

但是,可以通过配置谁可以使用该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

答案 3 :(得分:0)

这显然不安全,但是您别无选择,因此限制许可证密钥很重要。

解压缩apk(将其重命名为.zip并打开,或者从bash unzip [your apk path]中解压缩)

现在-妙招:找到一个名为resources.arsc的文件(在zip的根目录中),并使用任何同意打开它的编辑器打开它。甚至TextEdit或Atom都足够。搜索AIza,就在这里。使用您的用户ID。

...或不太像骇客风格的方法:只需将APK拖放到Android Studio。您可以看到其中的所有内容:在resources.arsc中,您可以在简单漂亮的GUI中找到所有键和值,所有字符串,所有整数...

更大的问题:是否有办法告诉ProGuard有效地对其进行混淆。 还是有一种方法可以使用与服务器共享的密钥对其进行加密。

答案 4 :(得分:-4)

使用Firebase并在生成的密钥库文件添加256后添加指纹 Firebase中的项目和商店价值。