【问题标题】:Google Geo location Api key exposed in Android ApkAndroid Apk 中暴露的 Google Geo location Api 密钥
【发布时间】:2020-01-29 02:20:24
【问题描述】:

Google 警告我,我的 google Api 密钥暴露在 Manifest 文件和 Java 文件中。我的清单文件看起来像:

<meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="AIza..................................03E"/>

在strings.xml文件中:

<string name="google_direction_api_key">AIza................................03E</string>

在 Java 中:

+"&"+"key="+getResources().getString(R.string.google_direction_api_key);

所以,我的问题是如何在 java 和 xml 文件中使用此 Api 密钥,以便密钥不会暴露?有什么办法吗?

谢谢。

【问题讨论】:

标签: java android api google-play-console google-geolocation


【解决方案1】:

您必须将该密钥限制为仅使用已签署应用程序包的密钥指纹 - 使用不受限制的 API 密钥,这些密钥可以被提取,然后使用并从您的信用卡中扣除。如果此 API 密钥是从资源中引用的,或者静态字符串无关紧要,则两者都可以提取 - 只有密钥限制才能防止未经授权的使用。

@见API Key Best Practices

【讨论】:

  • 这样,当我限制浏览器键的方向时,我遇到了另一个问题,它不起作用,我该怎么办? @马丁泽特勒?有什么建议吗?
  • @NoorHossain “浏览器密钥”是什么意思? Android 密钥不是网络密钥,只能通过 IP 地址进行限制。因此,当从 Web 视图(具有动态 IP)请求时,您只能通过 Web 服务器访问 API。最好甚至请求服务器端,这样密钥就不会暴露。
【解决方案2】:

您可以直接将其设置为资源引用。

<meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_direction_api_key"/>

您是否确保使用与您的应用程序 ID 和签名相关的 API 密钥?也许警告意味着该密钥也可以从不同的应用程序中使用。尝试创建一个仅对您的应用程序有效的新 API 密钥,然后查看警告是否仍然存在。

【讨论】:

  • 但它可以暴露在字符串引用中。请参阅我在 java 部分的问题。我使用了字符串引用,但谷歌说:它可以被暴露。
猜你喜欢
  • 2022-01-21
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 2020-07-13
  • 2012-01-22
  • 2011-12-13
  • 1970-01-01
相关资源
最近更新 更多