ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

فهم قواعد قاعدة بيانات Firebase Realtime

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

تحتوي قواعد أمان قاعدة البيانات في الوقت الفعلي على بناء جملة يشبه JavaScript وتأتي في أربعة أنواع:

أنواع القواعد
.اقرأ يصف ما إذا ومتى تم السماح للمستخدمين بقراءة البيانات.
.اكتب يصف ما إذا كان يُسمح بكتابة البيانات ومتى.
.validate يحدد الشكل الذي ستبدو عليه القيمة المنسقة بشكل صحيح ، وما إذا كانت تحتوي على سمات فرعية ، ونوع البيانات.
.indexOn يحدد الطفل للفهرسة لدعم الطلب والاستعلام.

نظرة عامة على أمان Realtime Database

توفر قاعدة بيانات Firebase Realtime مجموعة كاملة من الأدوات لإدارة أمان تطبيقك. تسهل هذه الأدوات مصادقة المستخدمين وفرض أذونات المستخدمين والتحقق من صحة المدخلات.

تعمل التطبيقات التي تعمل بنظام Firebase على تشغيل رموز من جانب العميل أكثر من تلك التي تحتوي على العديد من حزم التكنولوجيا الأخرى لذلك ، قد تختلف الطريقة التي نتعامل بها مع الأمان قليلاً عما اعتدت عليه.

المصادقة

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

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

تفويض

تحديد المستخدم الخاص بك هو فقط جزء من الأمن. بمجرد أن تعرف من هم ، فأنت بحاجة إلى طريقة للتحكم في وصولهم إلى البيانات الموجودة في قاعدة البيانات الخاصة بك. تسمح لك قواعد أمان قاعدة البيانات في الوقت الفعلي بالتحكم في الوصول لكل مستخدم. على سبيل المثال ، إليك مجموعة من قواعد الأمان التي تسمح لأي شخص بقراءة المسار /foo/ ، ولكن لا أحد يكتب إليه:

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

.read و .write قواعد تتالي، وحتى هذه المنح مجموعة الأوامر قراءة الوصول إلى أي بيانات في مسار /foo/ وكذلك أي مسارات أعمق مثل /foo/bar/baz . علما بأن .read و .write قواعد ضحالة في تجاوز قاعدة بيانات قواعد أعمق، وبالتالي الوصول للقراءة إلى /foo/bar/baz سيظل الممنوحة في هذا المثال حتى لو قاعدة في مسار /foo/bar/baz تقييم إلى خطأ.

تتضمن قواعد أمان قاعدة البيانات Realtime متغيرات ووظائف مضمنة تسمح لك بالإشارة إلى مسارات أخرى وطوابع زمنية من جانب الخادم ومعلومات المصادقة والمزيد. في ما يلي مثال على قاعدة تمنح حق الوصول للكتابة للمستخدمين المصادق عليهم إلى /users/<uid>/ ، حيث يمثل <uid> معرّف المستخدم الذي تم الحصول عليه من خلال مصادقة Firebase.

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

تأكيد صحة البيانات

قاعدة بيانات Firebase Realtime غير مخطط لها. هذا يجعل من السهل تغيير الأشياء أثناء التطوير ، ولكن بمجرد أن يصبح تطبيقك جاهزًا للتوزيع ، من المهم أن تظل البيانات متسقة. وتشمل اللغة قواعد ل .validate القاعدة التي تسمح لك لتطبيق منطق التحقق من صحة باستخدام نفس العبارات المستخدمة ل .read و .write القواعد. الاختلاف الوحيد هو أن قواعد التحقق من الصحة لا تتالي ، لذلك يجب تقييم جميع قواعد التحقق من الصحة ذات الصلة إلى صحيح حتى يتم السماح بالكتابة.

تفرض هذه القاعدة أن البيانات المكتوبة إلى /foo/ يجب أن تكون سلسلة أقل من 100 حرف:

{
  "rules": {
    "foo": {
      ".validate": "newData.isString() && newData.val().length < 100"
    }
  }
}

التحقق من صحة قواعد من الوصول إلى كل نفس المدمج في وظائف والمتغيرات كما .read و .write القواعد. يمكنك استخدام هذه لإنشاء قواعد التحقق من الصحة التي تدرك البيانات الموجودة في مكان آخر في قاعدة البيانات الخاصة بك ، وهوية المستخدم ، ووقت الخادم ، وغير ذلك الكثير.

تحديد فهارس قاعدة البيانات

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

يتم تحديد الفهارس باستخدام قاعدة .indexOn . فيما يلي مثال لإعلان الفهرس الذي من شأنه فهرسة حقول الطول والطول لقائمة الديناصورات:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

الخطوات التالية

  • ابدأ التخطيط لتطوير قواعد قاعدة البيانات الخاصة بك.
  • تعرف على المزيد حول تأمين بياناتك باستخدام قواعد الأمان.
  • تعرف على المزيد حول تحديد الفهارس باستخدام القواعد.