android - 在 gradle 中包含 Google Map API key 有哪些安全风险?

标签 android google-maps gradle

多年前,谷歌指示开发人员将他们的谷歌地图键添加到 gradle 中的 buildTypes。它看起来类似于以下内容:

在 build.gradle 文件中:

buildTypes {
    debug {
        manifestPlaceholders = [ google_map_key:"your_dev_key"]
    }
    release {
        manifestPlaceholders = [ google_map_key:"prod_key"]
    }
}

然后在 list 中:
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="${google_map_key}"/>

一些开发人员甚至不会使用占位符,而是直接将 Google Map 键添加为字符串。今天,谷歌有不同的说明,我相信他们是由于 Firebase 的出现而添加的。

文档:https://developers.google.com/android/guides/google-services-plugin

新方法是将您的 key 添加到 google-services.json 文件中,该文件可以从 firebase 下载并添加到您的项目中。我的问题是,在 gradle 中公开您的 Google Maps API key 是否存在安全问题?包含 API key 的新方法和更新的库会尽量避免将其添加到 Gradle 和/或 list 中。是巧合,还是有安全原因?

最佳答案

当您为 Google Maps Android API 创建 API key 时,您必须设置一个由包名称和 SHA1 指纹组成的限制。

https://developers.google.com/maps/documentation/android-api/signup#key-std-details

在 gradle 中,您公开了一个 API key ,但没有公开在 Cloud 开发人员控制台中应用的限制。这意味着如果有人窃取了 API key ,他们将无法使用它,因为他们不会拥有相同的 SHA1 指纹,并且他们无法知道您在开发者控制台中应用了什么限制。

从这个角度来看,在 gradle 中包含用于 Google Maps Android API 的 API key 是安全的。

关于android - 在 gradle 中包含 Google Map API key 有哪些安全风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49542498/

相关文章:

android - 当应用程序处于终止状态时也可以离线同步数据

android - 如何为 ExoPlayer v2.5+ 使用 MediaSession 扩展

android - 如何实现拖放功能

java - Android 中如何转义字符串?

空对象引用上的 android.os.Looper android.content.Context.getMainLooper()

kotlin - 在git bash中编译我的Kotlin测试

selenium - 打开功能文件 cucumber 时无法初始化编辑器

java - 如何改变android中的坐标值?

javascript - 为什么在执行谷歌地图方向服务回调时DomWindow对象是 'this'

jenkins - 通过jenkins : where do dependencies download运行gradle测试服