根据我的理解(给定this previous question和the Google Maps API docs),似乎攻击者可以提升其他网站的配额。
例如,假设我运行一个网络应用程序“Find Taxi”,竞争对手运行“Find Ride”。在我的网络应用程序的JavaScript代码中,我包含了我的Google Maps v3 API密钥。 “Find Ride”的开发人员运行一个PhantomJS进程,该进程欺骗引用者标题(如http://findtaxi.com/)并在其服务器上每天加载25,000个映射(超出我的配额限制)。请注意,即使给定客户端IP速率限制,1个请求/秒/用户,也可以在一天内从一个客户端获得配额(一天86,400秒)。
我创建了一个简单的PhantomJS脚本来模拟这个(以及将引用者限制为example.com/*的API密钥),因此这种攻击似乎是可行的。谷歌是否依靠非技术原因来阻止这种情况?例如,我可以看到法律问题(如果此攻击泄露,对业务的威胁)和经济问题(运行攻击服务器的成本)。
我想我会问这个问题,以防我错过了为什么不能进行这种攻击的技术原因。
答案 0 :(得分:2)
Google Geo对Business的支持在2013年12月向我确认他们的文档在此问题上已过时。 Google Maps API域限制使用浏览器的window.location
对象和而不是 HTTP_REFERER
请求标头。考虑到HTTP_REFERER
可能由于各种原因而丢失,从新的浏览器窗口到代理服务器重写标头值,这是有道理的。
这使得欺骗授权域变得更加困难,但理论上它仍然是可能的。非常坚定的攻击者可以在任何开源浏览器引擎(例如,Chromium,PhantomJS,Rhino等)中修改window.location
的JS本机代码。
这似乎可能但不太可能,除非你有一些讨厌的竞争对手。此外,我敢打赌Google支持会调查第三方可疑的API滥用情况,如果您可以证明您的Maps API使用量明显高于显示加载地图API的网页的分析用量。
答案 1 :(得分:0)
是的,这是可能的,但Google对您的API密钥进行了域名限制。
这意味着您只能向例如www.example.com
域提供访问权限。
默认情况下,密钥可以在任何网站上使用。我们强烈建议您将密钥的使用限制在您管理的域中,以防止在未经授权的网站上使用。您可以通过点击密钥的编辑允许引荐来...链接来指定允许哪些域使用您的API密钥。
来源:Source
答案 2 :(得分:0)
最近我发现手动重复对quotaService.recordEvent Web服务的请求最终会使用配额,即使您启用http引用也不...
Why my Gogole Maps usage was increased significantly when manually repeat QuotaService.RecordEvent
不确定是否有任何解决办法可以阻止这种情况?