تجنُّب القواعد غير الآمنة

استخدِم هذا الدليل لفهم الثغرات الأمنية الشائعة في Firebase Security Rules الإعدادات، ومراجعة قواعدك الخاصة وتحسين أمانها، واختبار التغييرات قبل نشرها.

إذا تلقّيت تنبيهًا يشير إلى أنّ بياناتك غير مؤمَّنة بشكلٍ صحيح، راجِع هذه الأخطاء الشائعة وعدِّل أي قواعد معرَّضة للخطر.

الوصول إلى Firebase Security Rules

لعرض Security Rules الحالية، استخدِم إما Firebase CLI أو Firebase console. تأكَّد من تعديل قواعدك باستخدام الطريقة نفسها باستمرار لتجنُّب الكتابة فوق التعديلات عن طريق الخطأ. إذا لم تكن متأكدًا مما إذا كانت القواعد المحدّدة محليًا تعكس آخر التعديلات، يعرض Firebase console دائمًا آخر إصدار تم نشره من Firebase Security Rules.

للوصول إلى قواعدك من Firebase console، اختَر مشروعك، ثم انتقِل إلى Realtime Database، Cloud Firestore أو التخزين. انقر على القواعد بعد الانتقال إلى قاعدة البيانات أو مساحة التخزين الصحيحة.

للوصول إلى قواعدك من Firebase CLI، انتقِل إلى ملف القواعد الموضّح في ملف firebase.json.

فهم Firebase Security Rules

Firebase Security Rules تحمي بياناتك من المستخدمين الضارين. عند إنشاء مثيل قاعدة بيانات أو مساحة تخزين Cloud Storageفي Firebaseconsole، يمكنك اختيار رفض الوصول إلى جميع المستخدمين (الوضع المقفل) أو منح إذن الوصول إلى جميع المستخدمين (وضع الاختبار). على الرغم من أنّك قد تريد إعدادًا أكثر انفتاحًا أثناء التطوير، تأكَّد من تخصيص بعض الوقت لإعداد قواعدك بشكلٍ صحيح وتأمين بياناتك قبل نشر تطبيقك.

أثناء تطوير تطبيقك واختبار إعدادات مختلفة لقواعدك ، استخدِم أحد محاكيات Firebase المحلية لتشغيل تطبيقك في بيئة تطوير محلية.

السيناريوهات الشائعة التي تتضمّن قواعد غير آمنة

يجب مراجعة Security Rules التي ربما أعددتها تلقائيًا أو أثناء العمل في البداية على تطوير تطبيقك وتعديلها قبل نشر تطبيقك. تأكَّد من تأمين بيانات المستخدمين بشكلٍ صحيح من خلال تجنُّب الأخطاء الشائعة التالية.

إتاحة إمكانية الوصول المفتوح

أثناء إعداد مشروع Firebase، ربما تكون قد ضبطت قواعدك للسماح بإمكانية الوصول المفتوح أثناء التطوير. قد تظن أنّك الشخص الوحيد الذي يستخدم تطبيقك، ولكن إذا نشرته، سيصبح متاحًا على الإنترنت. إذا لم تكن تصادق على هوية المستخدمين وتضبط قواعد الأمان، يمكن لأي مستخدم يخمن رقم تعريف مشروعك سرقة البيانات أو تعديلها أو حذفها.

لا يُنصح بما يلي: إتاحة إذن القراءة والكتابة لـ جميع المستخدمين.

Cloud 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;
    }
  }
}

Realtime Database

{
  // 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
  }
}
    

Cloud Storage

// 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 using 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 Authentication. مزيد من المعلومات عن مصادقة هوية المستخدمين باستخدام القواعد.

Cloud Firestore