הבן את כללי האבטחה של Firebase עבור אחסון בענן

באופן מסורתי, אבטחה הייתה אחד החלקים המורכבים ביותר בפיתוח אפליקציות. ברוב היישומים, מפתחים חייבים לבנות ולהפעיל שרת שמטפל באימות (מי זה משתמש) והרשאה (מה משתמש יכול לעשות). אימות והרשאה קשים להגדרה, קשים יותר לביצוע נכון וקריטיים להצלחת המוצר שלך.

בדומה לאופן שבו אימות Firebase מקל עליך לאמת את המשתמשים שלך, כללי האבטחה של Firebase for Cloud Storage מקלים עליך לאשר משתמשים ולאמת בקשות. כללי האבטחה של אחסון בענן מנהלים את המורכבות עבורך על ידי כך שהם מאפשרים לך לציין הרשאות מבוססות נתיב. בכמה שורות קוד בלבד, אתה יכול לכתוב כללי הרשאה המגבילים בקשות Cloud Storage למשתמש מסוים או מגבילים את גודל העלאה.

ל-Firebase Realtime Database יש תכונה דומה, הנקראת Firebase Realtime Database Rules Security

אימות

לדעת מי הם המשתמשים שלך היא חלק חשוב בבניית אפליקציה, ואימות Firebase מספק פתרון קל לשימוש, מאובטח, רק בצד הלקוח לאימות. כללי האבטחה של Firebase עבור אחסון ענן קשורים לאימות Firebase לאבטחה מבוססת משתמש. כאשר משתמש מאומת באמצעות Firebase Authentication, המשתנה request.auth ב-Cloud Storage Security Rules הופך לאובייקט המכיל את המזהה הייחודי של המשתמש ( 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 עבור אחסון בענן גם לאימות נתונים, כולל אימות שם קובץ ונתיב וכן מאפייני מטא נתונים של קבצים כגון 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/.*');
    }
  }
}

הצעדים הבאים