يجمع Firebase خدمات تختلف في SDK وضوابط الوصول والتسعير. تحديد المستخدم لا يمنحه كل البيانات. يجب تقييم الأمن والتكلفة لكل خدمة.
المصادقة والتفويض
يدير Firebase Authentication تسجيل الدخول؛ وتحتاج الصلاحيات إلى تعريف مستقل. يستخدم عملاء الويب والجوال في Cloud Firestore قواعد Security Rules. تتجاوزها مكتبات الخادم وتستخدم IAM؛ فلا يغطي ضبط واحد المسارين. تتطلب MFA الويب الموثقة Firebase Authentication with Identity Platform.
البيانات والملفات
Cloud Firestore وRealtime Database خدمتا قواعد بيانات منفصلتان؛ ويخزن Cloud Storage كائنات مثل الملفات. لا تشترك في قاعدة أمن واحدة. تتطلب FAQ الحالية خطة Blaze لاستخدام Cloud Storage for Firebase، بما يشمل الحاويات القائمة، مع احتمال بقاء استخدام بلا رسوم. راجع الحصص والفوترة قبل وصف البنية بالمجانية.
إشعارات FCM
يستخدم FCM HTTP v1 تفويض الخادم، بما فيه رموز OAuth 2.0 قصيرة العمر. يتم الإرسال من بيئة موثوقة دون تضمين بيانات الإدارة في العميل. يحدد رمز تسجيل الجهاز وجهة الرسالة؛ ولا يمثل ID token للمستخدم أو صلاحية أعمال.
الجلسات والتشغيل
ميّز بين ID token وrefresh token والإلغاء. لا تثبت الصحة التشفيرية استمرار الصلاحيات. حدد سجلات مفيدة ومدد الاحتفاظ وتنبيهات التكلفة وضوابط الموارد. لا يجعل Firebase المعالجة ممتثلة تلقائيًا للائحة GDPR.
المصادر
- Firebase · Firestore Security Rules
- Firebase · Web multi-factor authentication
- Firebase · Cloud Storage billing requirements
- Firebase · FCM HTTP v1
- Firebase · Manage User Sessions
المراجعة التحريرية: 1 نوفمبر 2026.
انقل قرارات الهوية إلى أدوات التحليل.
لا يُخوّل تسجيل الدخول الناجح جميع الحقول في الرسم البياني. يجب أن يدعم سياق الهوية الذي يصل إلى كل أداة تحليل عمليات التحقق من الكائن المطلوب والبيانات الحساسة.
- اختبر الحقل نفسه تحت أدوار ومالكين متعددين.
- منع الوصول إلى الكائن قبل حساب الحقول المتداخلة.
- إعادة التشغيل بعد تغييرات الأدوار أو إلغاء الجلسة.
المصدر الأساسي: OWASP — GraphQL Cheat Sheet. المنهج المرتبط: اقرأ الدليل العملي.
تقسيم API وصادرات متسقة
قد تسبب البيانات المتغيرة فقدان سجلات أو تكرارها.
- سجّل المرشحات والترتيب ومفتاح الفصل عند تساوي القيم. حدّد إن كانت API تقدم لقطة ثابتة أم مجموعة متغيرة. اختبر الإنشاء والحذف أثناء القراءة؛ وجود مؤشر لا يضمن تجميد البيانات.
- في AIP-158 تنهي قيمة next_page_token الفارغة القراءة، لا صفحة نتائج قصيرة أو فارغة. الصفحتان الافتراضيتان [A,B] و[B,C] تضمان أربعة صفوف وثلاثة معرّفات فريدة. اكتشف تكرار المؤشر دون تقدم واتبع اتفاق API المستخدمة.
- احفظ الدفعة بشكل دائم قبل تثبيت الاستئناف. أعد الدفعة المنقطعة بمعرّفات مستقرة وافحص الصلاحيات في كل طلب؛ المؤشر ليس إذناً للوصول. إذا انتهت صلاحية اللقطة، أعد البدء أو طابق وفق سياسة واضحة؛ لا تجمع حالات مختلفة بصمت.
حالة قبول قابلة للتكرار
مثال افتراضي: البيانات لا تصف عميلاً أو نتيجة مرصودة.
عرض بيانات الحالة
{
"page_1_ids": [
"A",
"B"
],
"page_2_ids": [
"B",
"C"
],
"next_cursor": "c2",
"empty_page_has_next_cursor": true
}القرار المتوقع
B مكرر. افحص الهويات وتابع المؤشر حتى بعد صفحة فارغة إن بقي مؤشر تالٍ.
إجراء التحقق
- حدد المرشحات والترتيب الثابت وهويات العناصر.
- اختبر التكرار وصفحة فارغة بمؤشر تالٍ.
- احتفظ بالمعرفات وشرط النهاية الحقيقي. قارن العناصر المستلمة والمعرّفات الفريدة؛ وسجّل تكرار المؤشر دون اعتبار صفحة فارغة ذات متابعة نهايةً للجمع.
هل يثبت العدد المتوقع للصفوف اكتمال التصدير؟
لا. يمكن لمعرّف ناقص وآخر مكرر أن يتعادلا عددياً. قارن المعرّفات والنطاق ووقت القطع وسجّل الفروق غير المحلولة.
المصدر الأساسي: Google AIP-158 — Pagination. المنهج المرتبط: اقرأ الدليل العملي.
مفاتيح المرور: الاستعداد لتغيير النطاق وRP ID
فصل الحساب وأصل الويب وRP ID لتجنب إعادة ربط بيانات الاعتماد بصمت.
- سجّل الأصول القديمة والجديدة وRP ID والحسابات المرتبطة. تطابق اسم الحساب لا يجعل مفتاح المرور صالحاً لـRP ID آخر. افحص التركيبات المسموحة في WebAuthn ومسارات الوصول المتاحة أثناء الانتقال.
- في بيئة اختبار مصرح بها افحص التحدي والأصل وRP ID وربط الحساب بمكتبة مناسبة. جرّب أصلاً غير متوقع وتحدياً معاداً. تغيير RP ID يتطلب تسجيلاً جديداً موثّقاً؛ نسخ صف لا ينقل المفتاح.
- اختبر مستخدماً يملك الاعتماد القديم فقط والاسترداد والجلسات المفتوحة. حدّد فتح المسارات وإيقافها مع رجوع مختبر. التسجيل في النطاق الجديد لا يثبت إلغاء كل الجلسات القديمة.
حالة قبول قابلة للتكرار
مثال افتراضي: البيانات لا تصف عميلاً أو نتيجة مرصودة.
عرض بيانات الحالة
{
"old_origin": "https://login.old.example",
"old_rp_id": "old.example",
"new_origin": "https://login.new.example",
"new_rp_id": "new.example",
"same_service_account": true,
"expected": "authenticated_new_registration"
}القرار المتوقع
مثال افتراضي: الحساب نفسه، لكن old.example يصبح new.example مع RP ID مختلف. لا يعاد ربط الاعتماد القديم بصمت؛ يتبع التسجيل الجديد المسار الموثّق المخطط.
المصدر الأساسي: W3C — Web Authentication Level 2. المنهج المرتبط: اقرأ الدليل العملي.
الهوية: العوامل والجلسات والاسترداد
Firebase: الرمز القصير لا ينهي الجلسة كلها
تحدد الوثائق صلاحية ID token بساعة؛ وتتيح refresh tokens الحصول على رموز جديدة. إلغاء refresh tokens واكتشاف إلغاء ID token ضبطان مختلفان.
- ربط الإلغاء بالحساب المعني.
- استخدام فحص الإلغاء الموثق في SDK مثل checkRevoked.
- اختبار رمز قديم على كل خادم خلفي محمي وفحص الصلاحيات.
تم التحقق من المصادر في · NIST · Authenticator Event Management NIST · Session Management Firebase · Manage User Sessions
