POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
如果應用程式呼叫的 Firebase API 需要行動/網路用戶端提供的 API 金鑰,應用程式會自動在 Firebase 設定檔/物件中尋找專案 API 金鑰。不過,您可以使用環境變數等不同機制,為應用程式提供 API 金鑰。
查看 API 金鑰並套用適當限制 (建議做法)
雖然您不一定要將 Firebase 服務的 API 金鑰視為密鑰,但您應按照本節說明,檢查並套用限制和限制。
查看自動新增至 Firebase API 金鑰許可清單的 API
Firebase 在專案中建立 API 金鑰時,會自動在該金鑰中新增 「API 限制」。新增至這份許可清單的 API 是與 Firebase 相關的 API,需要用戶端在呼叫時一併提供 API 金鑰。請注意,使用 Firebase 服務所需的大多數 API 實際上都不需要列在 API 金鑰的許可清單中。
由於 Firebase 會為「所有」Firebase 服務新增必要的 API,因此 API 金鑰的許可清單可能包含您未使用產品的 API。您可以將 API 從許可清單中移除,但請務必避免移除 Firebase 和您使用的 Firebase 服務所需的 API 和 Firebase 服務 (請參閱每項服務 / 產品許可清單中的 Firebase 相關 API 清單)。否則,當您呼叫 Firebase 服務時就會發生錯誤。
如果使用密碼式驗證,請提高配額
如果您使用密碼式 Firebase 驗證,且有人持有您的 API 金鑰,只要該資料受到 Firebase 安全性規則保護,該使用者就「無法」存取您 Firebase 專案的資料庫或 Cloud Storage 資料。不過,他們可以使用您的 API 金鑰存取 Firebase 的驗證端點,並對您的專案提出驗證要求。
為了降低有人濫用 API 金鑰嘗試暴力攻擊的可能性,您可以縮減 identitytoolkit.googleapis.com 端點的預設配額,以反映應用程式預期的流量。請注意,如果您放寬配額後,應用程式突然增加了使用者,系統可能會發生登入錯誤,直到您提高配額為止。您可以在 Google Cloud 控制台中變更專案的 API 配額。
針對任何非 Firebase 服務使用個別且受限制的 API 金鑰
雖然用於 Firebase 服務的 API 金鑰通常不必被視為密鑰,但仍建議您針對與其他 Google Cloud API 搭配使用的 API 金鑰採取額外的預防措施。
如果您使用的 Google Cloud API (在任何平台上) 並非用於 Firebase 服務 / 產品,強烈建議您另外建立受限制的 API 金鑰,以便搭配這些 API 使用。如果 API 是計費的 Google Cloud 服務,這一點尤其重要。
舉例來說,如果您在 iOS 上使用 Firebase ML 和 Cloud Vision API,則應建立單獨的 API 金鑰,專門用於存取 Cloud Vision API。
針對非 Firebase API 使用獨立且受限制的 API 金鑰,您就能視需要輪替或替換金鑰,以及為 API 金鑰新增其他限制,而不會影響 Firebase 服務的使用方式。
查看如何建立 API 專屬金鑰的操作說明
這些操作說明會說明如何為名為 Super Service API 的假 API 建立獨立的受限制 API 金鑰。
步驟 1:將現有的 API 金鑰設為禁止存取 Super Service API
開啟 Google Cloud 控制台的「Credentials」(憑證) 頁面。系統出現提示訊息時,請選取專案。
針對清單中的每個現有 API 金鑰,開啟編輯檢視畫面。
在「API 限制」區段中,選取「限制金鑰」,然後加入清單中,讓 API 金鑰能夠存取的所有 API。請務必「不要」加入要建立個別 API 金鑰的 API (在此範例中為 Super Service API)。
設定 API 金鑰的 API 限制時,您會明確宣告該金鑰有權存取的 API。根據預設,如果「API 限制」部分已選取「不要限制金鑰」,則 API 金鑰可用於存取已啟用專案的任何 API。
現在,現有的 API 金鑰不會授予 Super Service API 的存取權,但您加入 API 限制清單內的任何 API 都能繼續使用每個金鑰。
步驟 2:建立並使用新的 API 金鑰來存取「Super Service API」
返回「Credentials」(憑證) 頁面。請確保您的 Firebase 專案仍處於選取狀態。
依序按一下「建立憑證」>「API 金鑰」。記下新的 API 金鑰,然後按一下「Restrict key」(限制金鑰)。
在 API 限制區段中,選取「Restrict key」(限制金鑰),然後只新增至清單 Super Service API。
如果您刪除某個應用程式正在使用的 API 金鑰,該應用程式的 API 呼叫就會失敗。您可能會收到嘗試使用無效 API 金鑰的報表、電子郵件或錯誤。
API 金鑰一經刪除即無法復原。
對於 Firebase API 金鑰的「API 限制」許可清單中需要哪些 API?
以 Firebase API 金鑰來說,只有需要納入金鑰「API 限制」許可清單的 API,就是要求用戶端在呼叫時一併提供 API 金鑰的 API。請注意,只有少數 Firebase 相關 API 符合這項規定。在專案中已啟用的大多數 Firebase 相關 API 不需要列入金鑰的「API 限制」許可清單中。
請參閱下表,決定要將哪些 Firebase 相關 API 加入 Firebase API 金鑰的「API 限制」許可清單中。別忘了,Firebase API 金鑰僅適用於 Firebase 服務。進一步瞭解如何為特定 API 類型建立個別的受限 API 金鑰。
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
您的應用程式用於呼叫 API 的 API 金鑰可能已套用 「API 限制」,且金鑰的許可清單中未包含該 API。