将Google Map API密钥包含在gradle中有哪些安全风险?

时间:2018-03-28 19:16:52

标签: android google-maps gradle

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

build.gradle文件中的

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

然后在清单中:

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

有些开发人员甚至不会使用占位符并直接将Google Map键添加为String。今天,由于Firebase的出现,Google认为他们添加了不同的说明。

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

新方法是将密钥添加到google-services.json文件中,该文件可以从firebase下载并添加到您的项目中。我的问题是,在Gradle中公开您的Google Maps API密钥是否存在安全问题?包含API密钥的新方法和较新的库试图避免将其添加到Gradle和/或清单中。这是巧合吗,还是有安全理由?

1 个答案:

答案 0 :(得分:1)

为Google Maps Android API创建API密钥时,您必须设置包名称和SHA1指纹的限制。

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

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

从这个角度来看,包括Google地图的API密钥在gradle中的Android API是安全的。