如何保护 google API 密钥
How to secure google API keys
我一直在对 Android 应用程序进行一些安全测试。我想解决的一件事是 API 密钥安全;特别是 google 地点和地图键。有很多帖子都在讨论这些选项,即将密钥编译到源代码中,将它们放入资源文件中,将它们编译到共享库中,等等。在我的特殊情况下,Maps 键在清单文件中,而 Places 键在共享库中。我创建了一个签名的 APK 来测试获取和使用其中一个密钥的难度。我做了以下事情:
- 使用 apktool 对 APK 进行逆向工程,
- 打开清单并抓取地图键,
- 创建了一个伪造的应用程序版本,其包结构与包含 activity 和 google 地图片段的原始版本相同,
- 将 Maps 密钥放入伪造的清单中,
- 运行 显示地图的应用程序
那我:
- 在假应用程序中创建了一个新的 class,其包和名称与原始应用程序相同,并使用代码从 /data/data/[包名称]、
加载共享库
- 将共享库从反向工程 APK 复制到假应用程序的 /data/data/[package name] 文件夹,
- 运行 伪造的应用程序,然后打印出位置 API 键
所以最后,我毫不费力地获得了两个密钥,然后可以在应用程序的伪造版本中使用它们。
我确定我一定遗漏了什么。看起来 Maps 的唯一选择是将密钥存储在清单中。是什么阻止别人做我所做的事?肯定不能只是冷漠。我意识到如果有人试图使用劫持的 API 密钥发布他们的应用程序,他们可能会被抓到。但是,有人可以创建一个应用程序并让人们加载它。如果公司每次都必须更改被劫持的密钥,这对客户来说将是一个巨大的干扰。
我认为您需要再次查看 Google API 键的文档。似乎有一种叫做限制的东西应该能够帮助您确保您的密钥受到保护并且不会被其他应用程序使用。
我认为限制可以防止来自您未包含的其他域的请求无法呈现。
有很多方法可以确保您的 API 密钥安全。下面的链接解释了如何在您的用例中保护您的 keys.Depending 您可以关注其中一个
我一直在对 Android 应用程序进行一些安全测试。我想解决的一件事是 API 密钥安全;特别是 google 地点和地图键。有很多帖子都在讨论这些选项,即将密钥编译到源代码中,将它们放入资源文件中,将它们编译到共享库中,等等。在我的特殊情况下,Maps 键在清单文件中,而 Places 键在共享库中。我创建了一个签名的 APK 来测试获取和使用其中一个密钥的难度。我做了以下事情:
- 使用 apktool 对 APK 进行逆向工程,
- 打开清单并抓取地图键,
- 创建了一个伪造的应用程序版本,其包结构与包含 activity 和 google 地图片段的原始版本相同,
- 将 Maps 密钥放入伪造的清单中,
- 运行 显示地图的应用程序
那我:
- 在假应用程序中创建了一个新的 class,其包和名称与原始应用程序相同,并使用代码从 /data/data/[包名称]、 加载共享库
- 将共享库从反向工程 APK 复制到假应用程序的 /data/data/[package name] 文件夹,
- 运行 伪造的应用程序,然后打印出位置 API 键
所以最后,我毫不费力地获得了两个密钥,然后可以在应用程序的伪造版本中使用它们。
我确定我一定遗漏了什么。看起来 Maps 的唯一选择是将密钥存储在清单中。是什么阻止别人做我所做的事?肯定不能只是冷漠。我意识到如果有人试图使用劫持的 API 密钥发布他们的应用程序,他们可能会被抓到。但是,有人可以创建一个应用程序并让人们加载它。如果公司每次都必须更改被劫持的密钥,这对客户来说将是一个巨大的干扰。
我认为您需要再次查看 Google API 键的文档。似乎有一种叫做限制的东西应该能够帮助您确保您的密钥受到保护并且不会被其他应用程序使用。
我认为限制可以防止来自您未包含的其他域的请求无法呈现。
有很多方法可以确保您的 API 密钥安全。下面的链接解释了如何在您的用例中保护您的 keys.Depending 您可以关注其中一个