如何保护Google API密钥

用户名

我一直在Android应用程式上进行一些安全性测试。我想要解决的一件事是API密钥安全性;特别是谷歌的地方和地图键。有很多关于选项的文章,即将键编译到源代码,将它们放置在资源文件中,将它们编译到共享库等。在我的特殊情况下,Maps键在清单文件中,而Places键在共享库中。我创建了一个签名的APK,以测试获取和使用其中一个密钥的难度。我做了以下事情:

  • 使用apktool对APK进行反向工程,
  • 打开清单并抓住地图键,
  • 使用与包含包含Google Map片段的活动的原始包结构相同的包结构创建了该应用程序的虚假版本,
  • 将Maps密钥放入伪造的清单中,
  • 运行应用程序,显示地图

然后我:

  • 在伪造的应用程序中使用与原始包相同的包和名称创建了一个新类,并使用代码从/ data / data / [package name]加载共享库,
  • 将共享库从反向工程的APK复制到假应用程序的/ data / data / [package name]文件夹中,
  • 运行假冒的应用程序,然后打印出Locations API密钥

因此,最后,我不费吹灰之力就拥有了两个密钥,然后就可以在伪造的应用程序版本中使用它们了。

我确定我一定会丢失一些东西。看来,地图的唯一选择是将密钥存储在清单中。是什么阻止某人做我的工作?当然,它不能只是冷漠。我意识到,如果有人尝试使用劫持的API密钥发布应用,则可能会被抓住。但是,有人可以创建一个应用程序,并让人们自己加载它。如果公司每次有人弄乱被劫持的钥匙时都必须更换被劫持的钥匙,对客户来说将是一个巨大的破坏。

标记

我相信您需要再次阅读Google API文档密钥。似乎有一种叫做“限制”的东西,应该可以帮助您确保您的密钥受到保护,而不在其他某些应用程序上使用。

我认为,限制会阻止来自您未包括在内的其他域的请求无法呈现。

API密钥最佳做法

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章