Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

הימנע מחוקים לא בטוחים

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

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

גש לכללי האבטחה שלך ב- Firebase

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

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

כדי לגשת לכללים שלך מ- Firebase CLI, עבור לקובץ הכללים המצוין בקובץ firebase.json שלך.

הבן את כללי האבטחה של Firebase

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

כשאתה מפתח את האפליקציה שלך ובודק תצורות שונות לכללים שלך, השתמש באחד ממאמי ה- Firebase המקומיים להפעלת האפליקציה שלך בסביבת פיתוח מקומית.

תרחישים נפוצים עם כללים לא בטוחים

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

גישה חופשית

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

לא מומלץ: גישה לקריאה וכתיבה לכל המשתמשים.

ענן Firestore

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this ruleset in production; it allows
// anyone to overwrite your entire database.

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

מסד נתונים בזמן אמת

{
  // Allow read/write access to all users under any conditions
  // Warning: **NEVER** use this ruleset in production; it allows
  // anyone to overwrite your entire database.

  "rules": {
    ".read": true,
    ".write": true
  }
}
    

אחסון בענן

// Anyone can read or write to the bucket, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded via App Engine public.
// Warning: This rule makes every file in your Cloud Storage bucket accessible to any user.
// Apply caution before using it in production, since it means anyone
// can overwrite all your files.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
    
פתרון: כללים המגבילים את הגישה לקריאה וכתיבה.

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

ענן Firestore

מסד נתונים בזמן אמת

אחסון בענן

גישה לכל משתמש מאומת

לפעמים, כללים בודקים שמשתמש מחובר, אך אינם מגבילים עוד יותר את הגישה על סמך אימות זה. אם אחד הכללים שלך כולל auth != null , אשר שברצונך שלכל משתמש מחובר תהיה גישה לנתונים.

לא מומלץ: כל משתמש מחובר קיבל גישה לקריאה וכתיבה לכל מסד הנתונים שלך.

ענן Firestore

service cloud.firestore {
  match /databases/{database}/documents {
    match /some_collection/{document} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

מסד נתונים בזמן אמת

{
  "rules": {
    ".read": "auth.uid != null",
    ".write": "auth.uid != null"
  }
}

אחסון בענן

// Only authenticated users can read or write to the bucket
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}
פתרון: גישה צרה באמצעות תנאי אבטחה.

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

ענן Firestore

מסד נתונים בזמן אמת

אחסון בענן

(מסד נתונים בזמן אמת) כללים שעברו בירושה שלא כהלכה

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

לא מומלץ: זיקוק כללים בנתיבי ילדים
{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
פתרון: כתוב כללים בנתיבי הורה רחבים, והעניק הרשאות ספציפיות יותר בנתיבי ילדים אם זקוק לגישה לנתונים שלך דורשים יותר פירוט, שמור על הכללים שלך פרטניים. למידע נוסף על מדריכי כללי מסדי נתונים בזמן אמת באבטחת הנתונים שלך .

גישה סגורה

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

ענן Firestore

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

מסד נתונים בזמן אמת

{
  "rules": {
    ".read": false,
    ".write": false
  }
}
    

אחסון בענן

// Access to files through Cloud Storage is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

ה- Firkase Admin SDK ופונקציות הענן עדיין יכולים לגשת למסד הנתונים שלך. השתמש בכללים אלה כאשר אתה מתכוון להשתמש ב- Cloud Firestore או במסד נתונים בזמן אמת כ- backend רק לשרת בשיתוף עם SDK מנהל המערכת של Firebase. למרות שזה מאובטח, עליך לבדוק שלקוחות האפליקציה שלך יכולים לאחזר נתונים כהלכה.

למידע נוסף על כללי האבטחה של Cloud Firestore וכיצד הם פועלים, התחל בעבודה עם כללי האבטחה של Cloud Firestore .

בדוק את כללי האבטחה של Cloud Firestore

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

כדי לאמת במהירות את כללי האבטחה של Firebase במסוף Firebase, השתמש בסימולטור כללי Firebase .