google-maps - map替代 - 免費地圖api




我應該採取哪些措施來保護我的Google Maps API密鑰? (4)

Google API控制台上有一項設置可以保護您的API帶寬使用不會與其他域/用戶一起使用。 您可以在API控制台上使用referrer來限制和保護它。 API密鑰將拒絕沒有符合您限制的引薦來源的請求。

以下是Google針對API Key的屏幕截圖,只能由Google使用其兩個域。

我已為我的域獲取了Google Maps API密鑰。

我獲取密鑰時提供的示例顯示了請求參數中嵌入的密鑰,例如:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=my-key" type="text/javascript"></script>

我感謝請求中的referrer字段必須與我的域匹配,在腳本標記中使我的密鑰可見是否安全? 或者我還有其他步驟嗎?


您應該使用後端/服務器端來保護和處理密鑰。 在我的情況下,我使用Django f / w服務器端,可以提供ajax調用從服務器腳本/ db獲取密鑰,然後將其傳遞到google api。


考慮到密鑰必須包含在HTML頁面的<script>標籤中,要從谷歌服務器加載JS文件/數據,您無能為力:

  • 你必須把它放在你的HTML文件中
  • 每個人都可以看看那些。

儘管如此,它並不重要:如果有人試圖在另一個域上使用此密鑰而不是你的,它們將獲得Javascript警報 - 這對其他用戶來說並不好。

所以:

  • 你無能為力; 這是它的工作方式
  • 我會說,你應該擔心的並不多。

雖然這個問題已經存在了幾年,但它是一個非常好的問題。 據我了解,暴露API密鑰,即使它們是域匹配的,仍然可能導致濫用。 這裡有一篇關於Security Stack Exchange的文章,更詳細地介紹了這一點。

Google可以在此發布您可以採取的避免潛在濫用行為的步驟:

安全使用API​​的最佳實踐指南: https://support.google.com/cloud/answer/6310037?hl=en https://support.google.com/cloud/answer/6310037?hl=en

雖然我建議將所有這些都放在船上,但有一種方法可以處理Brabster發布的具體示例,並將密鑰存儲在環境變量中 。 這樣,您只需將密鑰替換為存儲在項目中的服務器端變量即可。 但是,請確保不將存儲密鑰的文件提交到公共存儲庫。







google-maps