فهم قواعد أمان Firebase لخدمة Cloud Storage

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

على غرار الطريقة التي يسهِّل بها Firebase Authentication مصادقة للمستخدمين، فإنّ Firebase Security Rules لـ Cloud Storage تسهِّل عليك تفويض المستخدمين والتحقق من صحة الطلبات. يمكنك من خلال Cloud Storage Security Rules إدارة التعقيدات نيابةً عنك ما يسمح لك بتحديد الأذونات المستندة إلى المسار. في بضعة أسطر من التعليمات البرمجية، يمكنك كتابة قواعد تفويض تحصر طلبات Cloud Storage مستخدم معين أو تضع حدًا لحجم التحميل.

يتضمّن Firebase Realtime Database ميزة مشابهة اسمها Firebase Realtime Database Security Rules

المصادقة

تعد معرفة من هم المستخدمون جزءًا مهمًا من إنشاء تطبيق ما، يوفّر Firebase Authentication حلاً سهل الاستخدام وآمنًا من جهة العميل فقط. للمصادقة. تعادل Firebase Security Rules لصالح Cloud Storage مع Firebase Authentication. للحفاظ على الأمان على مستوى المستخدم عندما تتم مصادقة المستخدم باستخدام Firebase Authentication، يصبح المتغير request.auth في Cloud Storage Security Rules كائنًا يحتوي على المعرّف الفريد للمستخدم (request.auth.uid) وكل حسابات المستخدمين الأخرى المعلومات في الرمز المميز (request.auth.token). عندما لا يكون المستخدم تمت المصادقة، العمود request.auth هو null. يتيح لك ذلك التحكّم بأمان الوصول إلى البيانات على أساس كل مستخدم على حدة. يمكنك الاطّلاع على مزيد من المعلومات في قسم المصادقة.

التفويض

يُعد تحديد هوية المستخدم جزءًا من الأمان فقط. بمجرد أن تعرف من هم، بحاجة إلى طريقة للتحكّم في إمكانية وصولهم إلى الملفات في Cloud Storage.

تتيح لك Cloud Storage تحديد كل ملف ولكل تفويض مسار. القواعد التي تظل موجودة على خوادمنا وتحدد إمكانية الوصول إلى الملفات في تطبيقك. على سبيل المثال، تتطلب Cloud Storage Security Rules التلقائية Firebase Authentication في لإجراء أي من عمليات read أو write على جميع الملفات:

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

يمكنك تعديل هذه القواعد عن طريق اختيار تطبيق Firebase في وحدة تحكّم Firebase. وعرض علامة التبويب Rules في قسم "مساحة التخزين".

التحقق من صحة البيانات

يمكن أيضًا استخدام Firebase Security Rules لـ Cloud Storage للتحقق من صحة البيانات، بما في ذلك التحقق من صحة اسم الملف ومساره بالإضافة إلى خصائص بيانات التعريف مثل 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/.*');
    }
  }
}

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