3 回答

TA貢獻1794條經驗 獲得超8個贊
我很確定他們使用REFERER URL來確定呼叫的來源。如果該域與分配給密鑰的域不匹配,則該請求無效。
對于一個實際的示例,使用PHP可以檢查域,$_SERVER['HTTP_REFERER']
以檢查引薦來源。如果域匹配,則返回有效響應。如果不是,您可以返回401未經授權或其他響應。

TA貢獻1858條經驗 獲得超8個贊
API密鑰本身很可能是與該密鑰相關聯的域的單向哈希,并且只有Google API服務器知道。它可能包含其他一些眾所周知的信息(當然對Google而言)。當您從該域發出請求時,API服務器會使用該請求來自的域,并以相同的一種方式進行哈希計算并比較這兩個值。
對于Ajax調用,他們很可能使用引薦來源網址獲取文檔宿主的域。盡管可以欺騙引薦來源網址,但最終還是要使用API,您需要獲取Google javascript才能在文檔中執行。此時,此javascript可以驗證調用Ajax API調用的文檔確實源自目標服務器。當然,如果您有自己的DOM實現或腳本的即時修改,這也是欺騙的。但是,這種欺騙需要在客戶端進行,并且想要使用Google API的網站能夠欺騙客戶端軟件的可能性很小。
請注意,由于該API本質上是免費的,因此他們也可以提供對其API的匿名訪問。顯然,Google的意圖不是保護未經授權的訪問,而是要確保他們可以收集有關該數據使用情況的盡可能多的數據,并能夠將該使用情況與他們收集的有關目標域的其他數據相關聯。因此,我不希望API密鑰驗證比我上面描述的復雜得多-更高級方法的ROI太低。
當然,也存在通過其API可能進行XSS攻擊的擔憂。但是我不認為他們的API密鑰與他們擁有的任何反XSS代碼有太多聯系。
- 3 回答
- 0 關注
- 672 瀏覽
添加回答
舉報