2016-09-21 34 views
18

因此,我在我正在做的第一個項目中使用Google Maps API ...因此,如果這是基本或顯而易見的,但我沒有能夠找到明確的答案或方向。以下是我從Google找到的有關安全使用API​​密鑰的文檔。如何安全地使用Google API密鑰


的最佳做法使用安全API密鑰

當您使用您的應用程序API密鑰,注意保持他們的安全。公開曝光您的憑據可能會導致您的帳戶遭到入侵,這可能會導致您的帳戶出現意外收費。爲了保證您的API密鑰安全,請遵循以下最佳實踐:

不要直接在代碼中嵌入API密鑰:嵌入代碼中的API密鑰可能會意外暴露給公衆 - 例如,如果您忘記刪除密鑰來自你分享的代碼。不要將API密鑰嵌入到應用程序中,而應將其存儲在環境變量或應用程序源代碼樹之外的文件中。 不要將API密鑰存儲在應用程序源代碼樹中的文件中:如果將API密鑰存儲在文件中,請將這些文件保存在應用程序源代碼樹之外,以幫助確保您的密鑰不會在源代碼控制系統中最終存在。如果您使用公共源代碼管理系統(如GitHub),這一點尤其重要。 限制您的API密鑰僅供需要它們的IP地址,引用網址和移動應用程序使用:通過限制可以使用每個密鑰的IP地址,引薦網址和移動應用程序,您可以減少受到危害的影響API密鑰。您可以通過打開Credentials頁面,然後使用所需設置創建新API鍵或編輯API密鑰設置來指定可以使用控制檯中的每個密鑰的主機和應用程序。 刪除不需要的API密鑰:爲了最大限度地減少您受到攻擊的風險,請刪除不再需要的任何API密鑰。 定期重新生成API密鑰:您可以通過單擊每個密鑰的重新生成密鑰,從Cloud Platform Console Credentials頁面重新生成API密鑰。然後,更新您的應用程序以使用新生成的密鑰。生成更換密鑰後,您的舊密鑰將繼續工作24小時。 在公開發布代碼之前查看您的代碼:確保您的代碼不包含API密鑰或任何其他隱私信息,然後才能公開您的代碼。


現在我的問題是我無法弄清楚如何把谷歌地圖在我的網站不直接把它的代碼。現在我的API是在我的index.html像這樣:

<script async defer 
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"> 
</script> 

,但這又是直接在我的世界代碼,看看我相信這是走錯了路。

+0

[我應該採取哪些措施來保護我的Google Maps API密鑰?](http://stackoverflow.com/questions/1364858/what-steps-should-i -take-to-protect-my-google-maps-api-key) – Burgi

回答

22

對於Google Maps JavaScript API v3,密鑰必須在您的頁面上公開。 適用的文字是:

限制您的API密鑰僅由在IP地址中,參照網址,並在需要它們的

轉到谷歌移動應用API控制檯並生成一個密鑰,並將其限制爲您擁有(或想要放置地圖)的URL以防止配額「盜竊」。

+0

非常感謝!我只是一味失蹤。剛剛添加我的網址,現在我很好走! –

9

您提到的API key best practices article只提供使用API​​密鑰的一般準則,對於某些面向最終用戶的API(如Google Maps JavaScript API),您無法避免將API密鑰暴露給最終用戶。

在公開的Maps JavaScript API應用程序中,強烈建議您將引用者限制添加到生產系統中使用的任何密鑰,特別是面向公衆的應用程序,並且只授權應用程序的域,主機甚至完整文件URL 。

當您在Google API Console中創建密鑰併爲Maps JavaScript API選擇設置憑據時,該向導將指導您如何保護密鑰,並會提示您輸入您希望授權的URL。

+0

謝謝!那裏有很好的信息 –

+0

有沒有什麼東西阻止我欺騙http Referer請求標題,並使用API​​ key手動發出大量有效請求我可以從你的javascript中獲取? –