طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 241 · تحليل وتصميم برمجيات الويب
الدرس 15 · الوحدة 7: تصميم صلاحيات المستخدمين وتنظيمها بشكل فعّال

لماذا الصلاحيات؟ المستخدمون والأدوار

لماذا يحتاج كل تطبيق ويب متعدد المستخدمين تصميمًا مدروسًا للصلاحيات، ومن أين يبدأ هذا التصميم؟ ⏱ نحو 40 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تميّز المصادقة من التفويض، والرد 401 من 403.
  • تشرح عواقب ضعف التحكم بالوصول بأمثلة.
  • تطبّق مبادئ أقل صلاحية والمنع افتراضيًّا وفصل المهام والملكية.
  • تحلل الأدوار والبيانات الحساسة من متطلبات المستخدمين.

١المصادقة والتفويض: سؤالان مختلفان

كل طلب يصل إلى الخادم يمر بسؤالين بالترتيب: المصادقة Authentication تسأل «من أنت؟» وتتحقق من الهوية (كلمة مرور، رمز). ثم التفويض Authorization يسأل «هل يحق لك هذا؟» ويتحقق من الصلاحية. نجاح الأول لا يعني نجاح الثاني: نورة دخلت بنجاح، لكن هذا لا يعني أنها تستطيع رؤية التقارير المالية.

diagram.mmd
sequenceDiagram  actor U as المستخدم  participant S as الخادم  U->>S: البريد + كلمة المرور  Note over S: المصادقة: من أنت؟  S-->>U: رمز الدخول (أنت نورة، موظفة تسجيل)  U->>S: اعتماد الطلب 7 + الرمز  Note over S: التفويض: هل يحق لك هذا؟  alt دورها يسمح بالاعتماد    S-->>U: 200 تم الاعتماد  else لا يسمح    S-->>U: 403 ممنوع  end
الخادمالمصادقة: من أنت؟التفويض: هل يحق لك هذا؟alt[دورها يسمح بالاعتماد][لا يسمح]المستخدمالبريد + كلمة المروررمز الدخول (أنت نورة، موظفة تسجيل)اعتماد الطلب 7 + الرمز200 تم الاعتماد403 ممنوع

الرد 401 يعني «لم نعرف من أنت» (فشل المصادقة)، و403 يعني «عرفناك، لكن ليس لك هذا» (فشل التفويض). تصميم الصلاحيات في هذه الوحدة يخص التفويض.

٢ماذا يحدث حين يضعف التحكم بالوصول؟

«ضعف التحكم بالوصول» Broken Access Control يتصدر قائمة OWASP Top 10 لأخطر ثغرات تطبيقات الويب. أمثلة واقعية على ما قد يحدث في «دورات» لو أُهمل التصميم:

الثغرةما يحدثالعاقبة
تغيير رقم في الرابطالمتدرب يغيّر /enrollments/15 إلى /16 فيرى تسجيل غيرهتسريب بيانات شخصية ومخالفة نظام حماية البيانات
زر مخفي فقطزر «اعتماد» مخفي عن المتدرب في الواجهة، لكن الخادم لا يتحققمتدرب يعتمد طلبه بنفسه بطلب مباشر
صلاحيات زائدةكل الموظفين «مدير» لأن ذلك أسهلخطأ واحد أو حساب مخترق يكشف كل شيء
حساب قديمموظف ترك العمل وحسابه فعّالوصول غير مشروع بعد انتهاء العلاقة

٣مبادئ التصميم

المبدأمعناهفي «دورات»
أقل صلاحية Least Privilegeكل دور يأخذ الحد الأدنى الذي يحتاجه لعمله فقطالمدرب يرى أسماء مسجلي دوراته فقط، لا جوالاتهم ولا دورات غيره
المنع افتراضيًّا Deny by Defaultكل شيء ممنوع ما لم يُسمح به صراحةنقطة نهاية جديدة بلا قاعدة صلاحية = ممنوعة للجميع
فصل المهامالعملية الحساسة لا ينجزها شخص واحد من البداية للنهايةمن يعتمد استرداد المبلغ غير من طلبه
الملكيةبعض البيانات تخص صاحبها فقطالمتدرب يرى تسجيلاته هو، لا كل التسجيلات
قابلية التدقيقالعمليات الحساسة تُسجَّل: من، وماذا، ومتىسجل لكل اعتماد ورفض واسترداد

٤تحليل الأدوار من متطلبات المستخدمين

من الخطة: «تحليل متطلبات المستخدمين والأدوار المختلفة لتحديد الصلاحيات المناسبة لكل مستخدم». نبدأ من أصحاب المصلحة وحالات الاستخدام التي جمعناها، فلكل دور أهدافه، ومنها تُشتق صلاحياته:

زائر

تصفح الدورات

متدرب

التسجيل والدفع

عرض تسجيلاتي فقط

مدرب

قائمة مسجلي دوراتي

موظفة التسجيل

اعتماد الطلبات ورفضها

مدير

التقارير المالية

إدارة الحسابات والأدوار

الأدوار وما يحتاجه كل منها من حالات الاستخدام: نقطة البداية لتصميم الصلاحيات.

ثم نحدد البيانات الحساسة، لأن الصلاحيات تحميها هي في النهاية:

البياناتحساسيتهامن يحتاجها فعلًا؟
رقم الهوية والجوالشخصية عاليةموظفة التسجيل فقط
المبالغ المدفوعةماليةالمدير والمحاسب
قائمة أسماء المسجلينمتوسطةالمدرب لدوراته، وموظفة التسجيل
وصف الدورات وأسعارهاعامةالجميع، حتى الزائر

توقّع وتحقّق

مستخدم سجّل الدخول بنجاح وطلب صفحة التقارير المالية بلا صلاحية. الرد المناسب:

عرفناه لكن ليس له ذلك.

«المدرب يرى أسماء مسجلي دوراته فقط» تطبيق لمبدأ:

لماذا لا يكفي إخفاء زر «اعتماد» عن المتدرب؟

نقطة نهاية جديدة بلا قاعدة صلاحية. حسب «المنع افتراضيًّا»:

الخلاصة

تحدٍّ تصميمي: تحليل أدوار «دورات»

متوسط

اكتب تحليل الأدوار لنظام «دورات»: الأدوار ومهامها، والبيانات الحساسة ومن يحتاجها، والممنوعات الصريحة التي تطبق مبدأ أقل صلاحية.

المطلوب:
  • خمسة أدوار على الأقل، كل دور في سطر: اسم الدور ثم «:» ثم مهامه. لا تنس الزائر غير المسجل.
  • ثلاثة أنواع من البيانات الحساسة، كل منها في سطر مع من يحتاجها.
  • ثلاث ممنوعات صريحة على الأقل، كل منها في سطر يبدأ بـ «لا».
✓ التحقق الآلي: يفحص المختبر بنية مستندك وصياغته (لا يحكم على جودة الفكرة؛ هذا دور معلمك)
  • خمسة أدوار على الأقل
  • كل دور: الاسم ثم «:» ثم المهام
  • دور الزائر غير المسجل موجود
  • أدوار مختلفة
  • ثلاثة أنواع بيانات حساسة على الأقل
  • كل نوع معه من يحتاجه
  • ثلاث ممنوعات على الأقل
  • كل ممنوع يبدأ بـ «لا»

💡 تلميح 1
ارجع إلى خريطة أصحاب المصلحة وحالات الاستخدام في الدروس السابقة.
💡 تلميح 2
الممنوعات الجيدة محددة: «لا يرى المدرب جوالات المتدربين» أفضل من «لا يرى المدرب البيانات».

نموذج واحد من إجابات كثيرة صحيحة.

الأدوار ومهامها (كل دور في سطر)
الزائر: يتصفح الدورات وأسعارها
المتدرب: يسجل ويدفع ويرى تسجيلاته
المدرب: يرى قائمة مسجلي دوراته ويسجل الحضور
موظفة التسجيل: تعتمد الطلبات وترفضها
المدير: يرى التقارير ويدير الحسابات والأدوار
البيانات الحساسة ومن يحتاجها
رقم الهوية والجوال ← موظفة التسجيل
المبالغ المدفوعة ← المدير والمحاسب
أسماء المسجلين ← المدرب لدوراته فقط
الممنوعات الصريحة (كل منها يبدأ بـ «لا»)
لا يرى المدرب جوالات المتدربين
لا يرى المتدرب تسجيلات غيره
لا تعتمد الموظفة طلبًا قدّمته لنفسها
لا يعدّل أحد الأدوار إلا المدير
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس