如何保护 google API 密钥

How to secure google API keys

我一直在对 Android 应用程序进行一些安全测试。我想解决的一件事是 API 密钥安全;特别是 google 地点和地图键。有很多帖子都在讨论这些选项,即将密钥编译到源代码中,将它们放入资源文件中,将它们编译到共享库中,等等。在我的特殊情况下,Maps 键在清单文件中,而 Places 键在共享库中。我创建了一个签名的 APK 来测试获取和使用其中一个密钥的难度。我做了以下事情:

那我:

所以最后,我毫不费力地获得了两个密钥,然后可以在应用程序的伪造版本中使用它们。

我确定我一定遗漏了什么。看起来 Maps 的唯一选择是将密钥存储在清单中。是什么阻止别人做我所做的事?肯定不能只是冷漠。我意识到如果有人试图使用劫持的 API 密钥发布他们的应用程序,他们可能会被抓到。但是,有人可以创建一个应用程序并让人们加载它。如果公司每次都必须更改被劫持的密钥,这对客户来说将是一个巨大的干扰。

我认为您需要再次查看 Google API 键的文档。似乎有一种叫做限制的东西应该能够帮助您确保您的密钥受到保护并且不会被其他应用程序使用。

我认为限制可以防止来自您未包含的其他域的请求无法呈现。

API Key best practices

有很多方法可以确保您的 API 密钥安全。下面的链接解释了如何在您的用例中保护您的 keys.Depending 您可以关注其中一个

Using Gradle

Using NDK

Using Server Call