多年前,谷歌指示开发人员将他们的谷歌地图键添加到 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/