java - Google New Places API - 您的应用程序包含公开的 Google Cloud Platform

标签 java android security

您的应用包含公开的 Google Cloud Platform (GCP) API key ,即类:

MainActivity->onCreate

请参阅以下文章了解如何解决该问题: https://support.google.com/faqs/answer/9287711

在实现新的 Google Places API 后,我从我的 Google Play 商店控制台收到此警报。我还使用 SHA key 对 API key 添加了限制。我使用了演示项目中的同一行。

https://github.com/googlemaps/android-places-demos/blob/master/demo/app/src/main/java/com/example/placesdemo/MainActivity.java (第 32 行)

我的代码

String apiKey = getResources().getString(R.string.google_api_key);

if (!Places.isInitialized()) 
Places.initialize(getApplicationContext(), apiKey);

这些行在导致此问题的 Activity 中使用。我需要知道如何解决这个问题。因为 Google newplaces API 也是我的要求,所以我无法避免在代码中使用这些行。

最佳答案

问题是您直接将 google api key 保存在 strings.xml 中。因此,任何人都可以轻松获取您的 key 并使用它,如果他们提取了您的 apk 文件,即使您使用了 proguard,它也不会帮助您。

您可以采取以下步骤来帮助最大限度地减少 API key 的暴露

  • 通过发出请求从服务器获取 Api key 。该 api 应该仅适用于您应用程序中的授权用户。当然,即使这不是 100% 安全,但它比直接将 api key 保留在应用程序中要好。
  • 定期重新生成您的 API key 。您可以从 Credentials 重新生成 API key 单击每个 key 的重新生成 key 页面。然后,更新您的应用程序以使用新生成的 key 。生成替换 key 后,您的旧 key 将继续有效 24 小时
  • 添加对 API key 的限制,请检查 this关于如何做到这一点的部分

关于java - Google New Places API - 您的应用程序包含公开的 Google Cloud Platform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57967507/

相关文章:

java - 插入排序、合并排序和快速排序的测试用例

android - 查看背景问题

http - 有什么方法可以防止在另一台计算机上使用 cookie?

android - BroadcastReceiver 在 BOOT_COMPLETED 后不工作

Android设备USB调试

android - 使用 Android 4.1 钥匙串(keychain)

java - Java 中类似 chroot 的环境?

java - 在 java 中,如何删除 sqlite 表?

java - 在 JLabel 中追加文本

java - 这两种冒泡排序实现之间的区别