安全性向來是應用程式開發中最複雜的部分之一。在大多數應用程式中,開發人員必須建構及執行伺服器,以便處理驗證 (使用者身分) 和授權 (使用者可執行的操作)。驗證和授權功能不但難以設定,也難以正確設定,但卻是產品成功的關鍵。
就像 Firebase Authentication 可讓您輕鬆驗證使用者一樣,Cloud Storage 的 Firebase Security Rules 也能讓您輕鬆授權使用者及驗證要求。Cloud Storage Security Rules 可讓您指定以路徑為基礎的權限,藉此管理複雜性。您只需編寫幾行程式碼,即可編寫授權規則,將 Cloud Storage 要求限制給特定使用者,或限制上傳內容的大小。
Firebase Realtime Database 也有類似的功能,稱為 Firebase Realtime Database Security Rules
驗證
瞭解使用者身分是建構應用程式的重要環節,而 Firebase Authentication 則提供易於使用且安全的用戶端專屬驗證解決方案。Firebase Security Rules 與 Cloud Storage 連結,可為使用者提供安全性。Firebase Authentication當使用者透過 Firebase Authentication 進行驗證時,Cloud Storage Security Rules 中的 request.auth
變數會變成物件,其中包含使用者的不重複 ID (request.auth.uid
) 和憑證中的所有其他使用者資訊 (request.auth.token
)。如果使用者未經過驗證,request.auth
就是 null
。這可讓您針對個別使用者安全地控管資料存取權。詳情請參閱「驗證」一節。
授權
辨識使用者只是安全性措施的一部分。知道這些使用者身分後,您需要控管他們在 Cloud Storage 中存取檔案的權限。
Cloud Storage 可讓您指定每個檔案和每個路徑的授權規則,這些規則會在伺服器上執行,並決定應用程式中的檔案存取權。舉例來說,預設的 Cloud Storage Security Rules 需要 Firebase Authentication,才能對所有檔案執行任何 read
或 write
作業:
service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth != null; } } }
如要編輯這些規則,請在 Firebase 主控台中選取 Firebase 應用程式,然後查看「儲存空間」部分的 Rules
分頁。
資料驗證
Cloud Storage 的 Firebase Security Rules 也可用於資料驗證,包括驗證檔案名稱和路徑,以及檔案中繼資料屬性,例如 contentType
和 size
。
service firebase.storage { match /b/{bucket}/o { match /images/{imageId} { // Only allow uploads of any image file that's less than 5MB allow write: if request.resource.size < 5 * 1024 * 1024 && request.resource.contentType.matches('image/.*'); } } }