【问题标题】:How does Google Cloud API limit the usage to a specific app?Google Cloud API 如何限制对特定应用的使用?
【发布时间】:2021-01-23 08:54:13
【问题描述】:

如果我理解正确的话,以下功能似乎能够阻止人们在使用应用程序之外调用 API。它是如何工作的,它的安全性如何?

它是否使用应用程序的哈希生成某种公钥/私钥对,并使用私钥对请求进行签名,以便 Google 的服务器可以验证请求是否来自应用程序?但是如果是这样的话,鉴于Android应用程序是用Java编写的并且可以相对容易地反编译,如果攻击者反编译该应用程序并从中提取私钥,他可以在不使用该应用程序的情况下调用Google API,不是吗? ?

【问题讨论】:

    标签: android google-cloud-platform


    【解决方案1】:

    the documentation 中所述(您可以在屏幕截图中看到),需要您的应用包的 SHA-1 指纹来验证请求源。

    为 Android 应用程序使用 Android 应用程序。此选项需要添加您的包名称和 SHA-1 签名证书指纹。

    编辑 1

    实际上,当你的Android应用调用你的服务时,会有诸如

    之类的自动标题
    • X-Android-Package 包含包名
    • X-Android-Cert 是您的包的 SHA-1 签名。

    当然,可以获取你的包,获取它的名称和它的 SHA-1 签名,并以编程方式重现你的 this 标头

    无论如何,API 密钥都不是保护访问的好方法。不涉及加密机制。

    【讨论】:

    • 但是它是如何工作的呢?我认为 Google Cloud API 基本上是网络请求。如果应用程序通过使用“SHA-1 指纹”对数据进行签名来调用 API,则它必须在 APK 中拥有私钥。如何防止攻击者反编译APK并找出密钥,并使用API​​伪装成应用程序?
    • 用“X-Android-Cert”这个名字搜了谷歌,已经有人问了the same question。所以,如果答案是正确的,它只是用公共签名密钥对包的名称进行哈希处理。两者都不会因设备、用户等而有所不同,所以我猜应用程序的“X-Android-Cert”总是相同的。这意味着,只需使用 HTTPS 嗅探器来确定应用程序的价值,并免费调用 API。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2017-12-24
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多