傳統上,安全性一直是應用程序開發中最複雜的部分之一。在大多數應用程序中,開發人員必須構建並運行一個服務器來處理身份驗證(用戶是誰)和授權(用戶可以做什麼)。身份驗證和授權很難設置,也很難正確執行,但對於產品的成功至關重要。
與 Firebase 身份驗證讓您輕鬆驗證用戶身份類似,Firebase 雲存儲安全規則讓您可以輕鬆授權用戶和驗證請求。雲存儲安全規則允許您指定基於路徑的權限,從而為您管理複雜性。只需幾行代碼,您就可以編寫授權規則,將 Cloud Storage 請求限制為特定用戶或限制上傳大小。
Firebase 實時數據庫具有類似的功能,稱為Firebase 實時數據庫安全規則
驗證
了解您的用戶是誰是構建應用程序的重要組成部分,Firebase 身份驗證提供了一種易於使用、安全、僅限客戶端的身份驗證解決方案。 Firebase Cloud Storage 安全規則與 Firebase 身份驗證相關聯,以實現基於用戶的安全性。當用戶通過 Firebase 身份驗證進行身份驗證時,Cloud Storage 安全規則中的request.auth
變量將成為一個對象,其中包含用戶的唯一 ID ( request.auth.uid
) 以及令牌中的所有其他用戶信息 ( request.auth.token
) 。當用戶未經過身份驗證時, request.auth
為null
。這使您可以安全地控制每個用戶的數據訪問。您可以在身份驗證部分了解更多信息。
授權
識別您的用戶只是安全的一部分。一旦您知道他們是誰,您就需要一種方法來控制他們對 Cloud Storage 中文件的訪問。
Cloud Storage 允許您指定我們服務器上的每個文件和每個路徑授權規則,並確定對應用中文件的訪問權限。例如,默認的雲存儲安全規則需要 Firebase 身份驗證才能對所有文件執行任何read
或write
操作:
service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth != null; } } }
您可以通過在Firebase 控制台中選擇 Firebase 應用並查看“存儲”部分的Rules
選項卡來編輯這些規則。
數據驗證
Firebase Cloud Storage 安全規則還可用於數據驗證,包括驗證文件名和路徑以及文件元數據屬性,例如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/.*'); } } }