限制 Android 应用程序的 Google API 密钥没用吗?

信息安全 安卓 移动的 应用安全 谷歌 限制
2021-09-07 13:54:08

根据 Google 的说法,可以在 Google Developers Console 中添加 SHA-1 证书指纹和包的名称,以限制他的 API 密钥在他的 Android 应用程序中的使用,这样开发人员就可以确保他们的 API 密钥不被泄露。由其他客户而不是他们的客户使用。

根据thisthis,程序员应该简单地将 SHA-1 指纹和包名称添加到他们的 HTTPS 请求标头中,以便 Google 能够验证请求来自“授权”应用程序并因此提供服务。

但是由于 SHA-1 指纹和包名是公开的,那么其他人也可以非常简单地将它们添加到他的 HTTPS-request 头中,让他的程序很容易绕过限制并被谷歌验证为“授权”应用程序!

因此,我不明白这种基于公开信息的限制的用处!

1个回答

正如 domenukk 在他的评论中所说,Google API 密钥限制会阻止其他用户将您的 API 密钥打包到他们的应用程序中。这只是 Google 确保其接收的 API 调用来自开发人员打包的应用程序的一种方式,该开发人员将所述密钥添加到他的 Google API 帐户。

但是,正如您正确指出的那样,很容易规避。例如,这个关于 SO 的答案显示了如何使用任何 Android Google API 密钥构建请求。所以规避限制的事情是相当微不足道的。

然而,好处在于攻击者所涉及的成本。一个类似的问题被问到HTTP referrers,所以我只引用你的问题的相关部分(只需SHA1 指纹替换referrer 标头):

因此,仅仅因为恶意代理可以复制引荐来源标头,他们可能没有时间或意愿这样做。想想一个有效的推荐人标题,比如音乐会腕带。你能伪造它们,或者偷偷绕过警卫检查腕带吗?当然可以,但这并不会使乐队毫无用处。

它增加了攻击者的成本。