如何保护我的api密钥?

时间:2018-08-05 22:20:51

标签: google-maps google-maps-api-3 google-api google-maps-android-api-2 api-key

我想从我的android / ios应用程序使用自动完成api。为此,我需要像这样调用url:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=paris&key=<myapikey>

问题是:是什么使别人不会从我的应用程序中提取我的api密钥,并将其用于自己的目的?这很重要,因为最后由我向Google收取使用费...

2 个答案:

答案 0 :(得分:1)

您的意图是调用Places API网络服务。 Google Maps Web服务仅支持IP地址限制。

您可以在以下页面上检查每个API支持哪种限制类型:

https://developers.google.com/maps/faq#keysystem

为了保护与示例请求一起使用的API密钥,您应该创建一个中间服务器并从该服务器发送请求。因此,您的应用程序应将请求发送到中间服务器,中间服务器应将带有受保护的API密钥的Places自动完成请求发送给Google,并将响应传递回您的应用程序。在这种情况下,您可以使用中间服务器的IP地址来通过API密钥来保护未经授权的访问。

我希望这会有所帮助!

答案 1 :(得分:0)

如果您创建并中介服务器并为每个用户创建令牌,又创建阻止可疑行为的监视服务怎么办?

例如,普通用户会请求x times/per day || hour || ...

当用户首次运行应用程序时,应用程序会收到[encrypted api + decryption key]并将其存储到钥匙串(适用于iOS)等安全位置

据我所知,如果您直接向google-map-api请求,总有一种嗅探数据包的方法。