从Android设备消费时的Google API安全性

时间:2014-09-24 07:54:43

标签: android api google-app-engine google-api

我正在构建一个Android应用程序,我将在其中使用应用程序本身的一些Google API。我已经启用了某些API的计费和增加的配额。

创建凭据时,我选择了Installed Application,Application type为Android,并提供了包名和SHA1指纹。我只是想知道Google如何决定请求是否来自我自己的Android应用程序。

任何在我们的设备上安装了我的应用的人都可以通过生根设备来获取APK,并获得SHA1指纹和包名称。此外,通过使用一些Dex工具反编译代码,也可以提取客户端ID。由于我已经为我的帐户启用了结算功能,如果有人能够获得所有这些详细信息,他们可以使用我的ID开始使用API​​。

请帮助我这个方案如何避免未经授权的应用程序/系统使用我的ID来使用API​​。

Creating credential for API consumption

2 个答案:

答案 0 :(得分:2)

你是正确的,攻击者可以获得你的签名证书SHA1指纹和ClientID,但幸运的是,这些信息对攻击者没什么用处,因为他们没有你的apk签名的私钥。这意味着他们无法使用相同的指纹创建自己的包。

在Android设备上,您通过Google Play服务APK使用Google服务。此代码将请求应用程序签名证书指纹发送到Google后端服务器。您(或潜在的攻击者)代码在调用Google API时不提供此指纹。使用包管理器在后台查询证书指纹。 Google后端会将收到的指纹与您注册的指纹进行比较。如果不匹配,则拒绝请求。所有这些通信都是加密的,因此流量监听不起作用。

因此,对于攻击者使用您的客户端ID,他必须操纵Android平台或Play服务APK,以便发送不正确的证书指纹。这不是一件容易的事。 Google Play服务不是开源的,Google也非常积极地对其进行更新,并拒绝为旧版本的请求提供服务。这意味着如果某些针对服务的攻击APK出现在野外,他们将发布新版本。

Chrome和iOS可能采用类似的机制。

答案 1 :(得分:0)

排序答案是:你不能。更长的响应:将重要的事情移动到安全的Web服务器......更多更好的技巧和解释How to avoid reverse engineering of an APK file?