2014-02-11 53 views
3

根據我的理解(給出this previous questionthe Google Maps API docs),似乎攻擊者可能會運行另一個站點的配額。攻擊者是否可以使用其他網站的Google地圖配額?

例如,假設我運行一個Web應用程序「Find Taxi」,並且競爭對手運行「Find Ride」。在我的網絡應用的JavaScript代碼中,我包含了我的Google Maps v3 API密鑰。 「Find Ride」的開發人員運行一個PhantomJS進程,欺騙引用標頭(如http://findtaxi.com/),並在其服務器上每天加載25,000張地圖(超出配額限制)。請注意,即使給定客戶端IP速率限制,1個請求/秒/用戶,也可以在一天內(一天86,400秒)從單個客戶端達到配額。

我創建了一個簡單的PhantomJS腳本來模擬此(以及API關鍵字將引用來源限制爲example.com/*),因此這種攻擊似乎是可行的。 Google是否依靠非技術原因來阻止這種情況?例如,我可以看到法律問題(如果此次攻擊泄露對企業構成威脅)和經濟問題(運行攻擊服務器的成本)。

我想我問這個問題,以防我錯過了這個攻擊不可能的技術原因。

+2

你剛剛回答你自己的問題嗎?這個問題是肯定的,可以在任何在線論壇上提出,這不是一個編程問題。 。。 – pythonian29033

+0

@ pythonian29033雖然沒有嚴格的編碼問題,但我覺得這屬於devops的世界。是否有devops的stackexchange網站? –

+0

是的, programmers.stackexchange,您的英文不好使您的論點無效 – pythonian29033

回答

2

商業谷歌地球支持,2013年12月對我來說證實,他們的文檔是過時的解決這一問題。 Google Maps API域限制使用瀏覽器的window.location對象和而不是HTTP_REFERER請求標頭。這對於HTTP_REFERER由於各種原因(從新的瀏覽器窗口到代理服務器重寫標題值)可能缺失而言是有意義的。

這使欺騙授權域變得困難很多,但它仍然是理論上可行的。非常確定的攻擊者可以在任何開源瀏覽器引擎(例如Chromium,PhantomJS,Rhino等)中修改用於window.location的JS本機代碼。

這似乎是可能的但不可能的,除非你有一些討厭的競爭對手。此外,我敢打賭,Google支持會調查第三方可疑的API濫用情況,前提是您可以證明您的Maps API使用量顯着高於您的分析使用情況顯示加載地圖API的頁面。

+0

請注意,即使不修改本地代碼,您也可以通過配置/ etc/hosts並訪問該站點來設置window.location。 – user826397

+0

@ user826397 - 好點 - 攻擊者可以修改網絡層。這絕對容易。 –

0

是的,但是Google對您的API密鑰做了域限制。

這意味着您只能訪問例如www.example.com域。

默認情況下,可以在任何網站上使用密鑰。我們強烈建議您將密鑰的使用限制爲您管理的域,以防止在未經授權的網站上使用。您可以通過點擊您的密鑰的編輯允許引用鏈接來指定允許哪些域使用您的API密鑰。

來源:Source

+0

但是,引用標頭是可僞造的。事實上,如果在攻擊服務器上,您將example.com設置爲localhost的別名並訪問Phantom.JS中的example.com(例如,page.open(「http://example.com」)),PhantomJS將將referrer標題設置爲http://example.com。 – user826397

相關問題