ste*_*eaw 13 encryption android risk-analysis google-play-services
如果黑客反编译我的APK,他能否从这个文件中看到我的API密钥?我并不担心我的源代码库.我只是担心黑客能够以某种方式从我的APK中看到这个API密钥.我正在尝试加密此文件并在运行时解密它但有一些问题
根据此处的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 描述的安全指南。
另请注意,尽管它们对您的应用程序是公开的,但不应在开源项目的公共存储库中提供这些文件。
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
应用程序中的所有内容都可以以非常简单的方式读取,因此正如 Google 建议的那样,您必须避免将信息放入 apk 中,尤其是在使用 firebase/google 云消息传递或此类服务时的服务器密钥。