我一直在Android应用程序上进行一些安全测试。我想要解决的一件事是API密钥安全性;特别是谷歌的地方和地图键。有很多关于选项的文章,即将密钥编译到源代码,将它们放置在资源文件中,将它们编译到共享库等。在我的特殊情况下,Maps密钥在清单文件中,而Places密钥在共享库中。我创建了一个签名的APK,以测试获取和使用其中一个密钥的难度。我做了以下事情:
然后我:
因此,最后,我没有太多的努力,就拥有了两个密钥,然后就可以在伪造的应用程序中使用它们了。
我确定我一定会丢失一些东西。看来,地图的唯一选择是将密钥存储在清单中。是什么阻止某人做我的工作?当然,它不能只是冷漠。我意识到,如果有人尝试使用劫持的API密钥发布应用,则可能会被抓住。但是,有人可以创建一个应用程序,并让人们自己加载它。如果公司每次有人弄乱被劫持的钥匙时都必须更换被劫持的钥匙,对客户来说将是一个巨大的破坏。
答案 0 :(得分:2)
我认为您需要再次阅读Google API密钥文档。似乎有一种叫做“限制”的东西,应该可以帮助您确保您的密钥受到保护,而不在其他某些应用程序上使用。
我相信限制会阻止来自您未包括在内的其他域的请求无法呈现。
答案 1 :(得分:1)