🧪 التدريبات
كل تمرين «جرّب بنفسك» في مكان واحد: اقرأ المطلوب، ثم اكتب الحل وشغّله داخل صفحة الدرس.
الوحدة 1: أساسيات أمن الويب وأهميتها
تحليل حادثة أمنيةتمهيدي · الدرس 1: لماذا أمن الويب؟ السرية والسلامة والإتاحة
في متجر «رفيق» الإلكتروني وقعت الحادثة التالية: «اكتشف موظف أن أي زائر يستطيع رؤية فاتورة أي عميل بتغيير رقم الفاتورة في الرابط، وأن بعض الفواتير عُدِّلت مبالغها». حلّل هذه الحادثة بملء الحقول.←خريطة سطح الهجومتمهيدي · الدرس 2: سطح الهجوم: الطلب والاستجابة بعين المهاجم
أمامك مسار في متجر «رفيق» يعرض ملف العميل ويحدّثه:
في متجر «رفيق» الإلكتروني وقعت الحادثة التالية: «اكتشف موظف أن أي زائر يستطيع رؤية فاتورة أي عميل بتغيير رقم الفاتورة في الرابط، وأن بعض الفواتير عُدِّلت مبالغها». حلّل هذه الحادثة بملء الحقول.←خريطة سطح الهجومتمهيدي · الدرس 2: سطح الهجوم: الطلب والاستجابة بعين المهاجم
أمامك مسار في متجر «رفيق» يعرض ملف العميل ويحدّثه:
PATCH /api/customers/:id بجسم فيه الاسم والبريد. حلّل سطح الهجوم بملء الحقول.←الوحدة 2: ثغرات أمن الويب الشائعة
تصنيف الثغرات على OWASPمتوسط · الدرس 3: قائمة OWASP لأشهر عشر مخاطر
راجع فريقك متجر «رفيق» ووجد أربع مشكلات. صنّف كل مشكلة إلى فئتها من OWASP Top 10، واذكر دفاعًا مختصرًا لكل منها.←تشخيص الجذر والدفاعمتوسط · الدرس 4: كيف تحدث الثغرات: الثقة بالمدخلات
لكل حالة من الحالات التالية في متجر «رفيق»، حدّد: هل المدخل عومل بيانات أم تعليمات؟ وما الدفاع الجذري المناسب (فصل أم ترميز)؟←
راجع فريقك متجر «رفيق» ووجد أربع مشكلات. صنّف كل مشكلة إلى فئتها من OWASP Top 10، واذكر دفاعًا مختصرًا لكل منها.←تشخيص الجذر والدفاعمتوسط · الدرس 4: كيف تحدث الثغرات: الثقة بالمدخلات
لكل حالة من الحالات التالية في متجر «رفيق»، حدّد: هل المدخل عومل بيانات أم تعليمات؟ وما الدفاع الجذري المناسب (فصل أم ترميز)؟←
الوحدة 3: تطبيق مبادئ أمن الويب
نموذج تهديدات لتسجيل الدخولمتوسط · الدرس 5: نمذجة التهديدات وتحليل المخاطر
ابنِ نموذج تهديدات مصغّرًا لصفحة تسجيل الدخول في متجر «رفيق» (المتدرب يرسل اسمًا وكلمة مرور، فيتحقق الخادم من قاعدة البيانات ويعيد جلسة).←تحصين خادم «رفيق»متوسط · الدرس 6: أقل الصلاحيات و HTTPS ورؤوس الأمان
هذا الخادم يعمل لكنه مكشوف: يعلن أنه Express ولا يحمل أي رأس أمان. حصّنه دون تغيير مساراته.←
ابنِ نموذج تهديدات مصغّرًا لصفحة تسجيل الدخول في متجر «رفيق» (المتدرب يرسل اسمًا وكلمة مرور، فيتحقق الخادم من قاعدة البيانات ويعيد جلسة).←تحصين خادم «رفيق»متوسط · الدرس 6: أقل الصلاحيات و HTTPS ورؤوس الأمان
هذا الخادم يعمل لكنه مكشوف: يعلن أنه Express ولا يحمل أي رأس أمان. حصّنه دون تغيير مساراته.←
الوحدة 4: تنفيذ ثغرات معروفة
سدّ حقن SQLمتقدم · الدرس 7: حقن SQL في المختبر
هذا الخادم فيه مساران مبنيان بدمج النص: بحث المنتجات، وتسجيل الدخول. كلاهما قابل للحقن. أصلحهما بالاستعلامات المعلَّمة دون تغيير سلوكهما الطبيعي.←سدّ ثغرة XSSمتقدم · الدرس
خادم الملاحظات يخزّن ما يرسله المستخدم ويعرضه مدموجًا في HTML، فهو عرضة لـ XSS المخزَّن. أصلحه بترميز المخرجات دون تغيير سلوكه الطبيعي.←
هذا الخادم فيه مساران مبنيان بدمج النص: بحث المنتجات، وتسجيل الدخول. كلاهما قابل للحقن. أصلحهما بالاستعلامات المعلَّمة دون تغيير سلوكهما الطبيعي.←سدّ ثغرة XSSمتقدم · الدرس
8: XSS وحقن الأوامر في المختبرخادم الملاحظات يخزّن ما يرسله المستخدم ويعرضه مدموجًا في HTML، فهو عرضة لـ XSS المخزَّن. أصلحه بترميز المخرجات دون تغيير سلوكه الطبيعي.←
الوحدة 5: تصميم تطبيقات مقاومة للهجمات
استعلامات معلَّمة كاملةمتقدم · الدرس 9: الاستعلامات المعلَّمة
هذا الخادم يبني كل استعلاماته بالدمج النصّي: المعرّف، والبحث، والترتيب. أمّنها: القيم بالتعليم، والترتيب بقائمة مسموحة.←ترميز في سياقينمتوسط · الدرس 10: ترميز المخرجات وسياسة CSP
هذا الخادم يضع اسم المستخدم في موضعين دون ترميز: قيمة سمة
هذا الخادم يصادق المستخدمين، لكنه يعرض أي طلب بمعرّفه، ويرجع طلبات الجميع في القائمة. أصلح الثغرتين بشرط الملكية.←
هذا الخادم يبني كل استعلاماته بالدمج النصّي: المعرّف، والبحث، والترتيب. أمّنها: القيم بالتعليم، والترتيب بقائمة مسموحة.←ترميز في سياقينمتوسط · الدرس 10: ترميز المخرجات وسياسة CSP
هذا الخادم يضع اسم المستخدم في موضعين دون ترميز: قيمة سمة
data-name، ونص العنوان. أمّن الموضعين بترميز يشمل علامة الاقتباس.←أصلح IDOR في الطلباتمتقدم · الدرس 11: كلمات المرور والتفويض و IDORهذا الخادم يصادق المستخدمين، لكنه يعرض أي طلب بمعرّفه، ويرجع طلبات الجميع في القائمة. أصلح الثغرتين بشرط الملكية.←
الوحدة 6: تقنيات الدفاع والاستجابة للهجمات
احمِ التحويل من CSRFمتقدم · الدرس 12: تزوير الطلبات CSRF والدفاع عنه
مسار التحويل ينفّذ لأي طلب، فهو عرضة لـ CSRF. احمِه برمز مضاد: أصدر رمزًا، واطلبه في التحويل، وارفض ما لا يحمله.←حدّد معدل تسجيل الدخولمتقدم · الدرس 13: تحديد المعدل وكشف التخمين
هذا الخادم يقبل محاولات دخول بلا حدّ. أضف تحديد معدل يسمح بثلاث محاولات فقط، ثم يردّ 429.←سجّل حدثًا حسّاسًامتوسط · الدرس 14: السجلات والاستجابة للحوادث
مسار حذف المستخدم إداريّ وخطير لكنه لا يُسجَّل، فلا أثر لمن حذف من. أضف تسجيلًا منظّمًا للحدث دون بيانات حسّاسة.←
مسار التحويل ينفّذ لأي طلب، فهو عرضة لـ CSRF. احمِه برمز مضاد: أصدر رمزًا، واطلبه في التحويل، وارفض ما لا يحمله.←حدّد معدل تسجيل الدخولمتقدم · الدرس 13: تحديد المعدل وكشف التخمين
هذا الخادم يقبل محاولات دخول بلا حدّ. أضف تحديد معدل يسمح بثلاث محاولات فقط، ثم يردّ 429.←سجّل حدثًا حسّاسًامتوسط · الدرس 14: السجلات والاستجابة للحوادث
مسار حذف المستخدم إداريّ وخطير لكنه لا يُسجَّل، فلا أثر لمن حذف من. أضف تسجيلًا منظّمًا للحدث دون بيانات حسّاسة.←
الوحدة 7: تقنية OAuth
حدّد أدوار OAuthمتوسط · الدرس
يريد متجر «رفيق» أن يستورد صور ملف المستخدم من خدمة «صور سحابية» عبر OAuth. حدّد الأدوار الأربعة في هذا السيناريو، واشرح لماذا OAuth أأمن من مشاركة كلمة المرور.←أكمل تحقق PKCEمتقدم · الدرس 16: تدفق Authorization Code مع PKCE
خادم التفويض المبسّط يصدر رمز الوصول لأي طلب تبديل دون التحقق من PKCE، فأي معترِض لرمز التفويض يحصل على رمز وصول. أكمل تحقق PKCE: قارن بصمة الـ verifier بالـ challenge المحفوظ.←
15: OAuth 2.0: المفاهيم والأدواريريد متجر «رفيق» أن يستورد صور ملف المستخدم من خدمة «صور سحابية» عبر OAuth. حدّد الأدوار الأربعة في هذا السيناريو، واشرح لماذا OAuth أأمن من مشاركة كلمة المرور.←أكمل تحقق PKCEمتقدم · الدرس 16: تدفق Authorization Code مع PKCE
خادم التفويض المبسّط يصدر رمز الوصول لأي طلب تبديل دون التحقق من PKCE، فأي معترِض لرمز التفويض يحصل على رمز وصول. أكمل تحقق PKCE: قارن بصمة الـ verifier بالـ challenge المحفوظ.←
الوحدة 8: تقنية OpenID Connect
تحقق من id_tokenمتقدم · الدرس
نقطة التحقق تقرأ مطالبات id_token بفكّه
نقطة التحقق تستدعي
يريد متجر «رفيق» إضافة «الدخول بـ Google». اكتب خطة الدمج بملء الحقول، مراعيًا الأمان.←
17: OpenID Connect و id_tokenنقطة التحقق تقرأ مطالبات id_token بفكّه
(decode) فقط دون التحقق من التوقيع، فيقبل أي رمج مزوّر. أصلحها لتتحقق من التوقيع، وترفض المزوّر.←ثبّت خوارزمية التحققمتقدم · الدرس 18: التحقق من رموز JWTنقطة التحقق تستدعي
jwt.verify دون تثبيت الخوارزمية، فهي عرضة لثغرة alg=none. أصلحها بتثبيت HS256، فيُرفض الرمز المزوّر بلا توقيع.←خطة دمج «الدخول بمزوّد»متوسط · الدرس 19: تسجيل الدخول بمزوّد هوية في تطبيقكيريد متجر «رفيق» إضافة «الدخول بـ Google». اكتب خطة الدمج بملء الحقول، مراعيًا الأمان.←
الوحدة 9: أمان البنية التحتية والمعايير
سدّ ثغرة SSRFمتقدم · الدرس 20: الجدران النارية و TLS وحماية الشبكة
مسار الجلب يطلب أي مضيف يحدده المستخدم، فهو عرضة لـ SSRF نحو الموارد الداخلية. قيّده بقائمة مضيفات مسموحة.←قائمة امتثال لمتجر «رفيق»متوسط · الدرس 21: المعايير والامتثال: ISO 27001 و PCI DSS
متجر «رفيق» سيقبل الدفع بالبطاقات ويحفظ بيانات العملاء. جهّز قائمة امتثال مختصرة بملء الحقول.←
مسار الجلب يطلب أي مضيف يحدده المستخدم، فهو عرضة لـ SSRF نحو الموارد الداخلية. قيّده بقائمة مضيفات مسموحة.←قائمة امتثال لمتجر «رفيق»متوسط · الدرس 21: المعايير والامتثال: ISO 27001 و PCI DSS
متجر «رفيق» سيقبل الدفع بالبطاقات ويحفظ بيانات العملاء. جهّز قائمة امتثال مختصرة بملء الحقول.←
الوحدة 10: تقنيات التشفير
تحقّق من علامة HMACمتقدم · الدرس 22: التجزئة وسلامة البيانات
نقطة التحقق تقبل أي رسالة دون فحص علامتها، فيمكن العبث بها. أكملها لتحسب HMAC بالمفتاح المشترك وتقبل الصحيحة فقط.←اختر التشفير المناسبمتوسط · الدرس 23: التشفير المتماثل وغير المتماثل
لكل حالة في متجر «رفيق»، حدّد نوع التشفير المناسب (متماثل، غير متماثل، أو هجين) مع سبب مختصر.←سياسة حماية البياناتمتوسط · الدرس 24: التوقيع الرقمي وحماية البيانات الحساسة
يحفظ متجر «رفيق»: كلمات مرور العملاء، وأرقام هويّاتهم، ويتلقّى تحديثات لنظامه من المورّد. ضع سياسة الحماية بملء الحقول.←
نقطة التحقق تقبل أي رسالة دون فحص علامتها، فيمكن العبث بها. أكملها لتحسب HMAC بالمفتاح المشترك وتقبل الصحيحة فقط.←اختر التشفير المناسبمتوسط · الدرس 23: التشفير المتماثل وغير المتماثل
لكل حالة في متجر «رفيق»، حدّد نوع التشفير المناسب (متماثل، غير متماثل، أو هجين) مع سبب مختصر.←سياسة حماية البياناتمتوسط · الدرس 24: التوقيع الرقمي وحماية البيانات الحساسة
يحفظ متجر «رفيق»: كلمات مرور العملاء، وأرقام هويّاتهم، ويتلقّى تحديثات لنظامه من المورّد. ضع سياسة الحماية بملء الحقول.←
الوحدة 11: إدارة الجلسات والمفاتيح
جلسة آمنةمتقدم · الدرس 25: إدارة الجلسات الآمنة
مسار الدخول يقبل معرّف جلسة من العميل (تثبيت) ويضع كوكيًّا بلا حماية. أصلحه: معرّف جديد من الخادم، وكوكي بخصائص آمنة.←خطة إدارة أسرار «رفيق»متوسط · الدرس 26: تخزين الأسرار والمفاتيح وتدويرها
يملك متجر «رفيق» أسرارًا: كلمة مرور قاعدة البيانات، ومفتاح توقيع JWT، ومفتاح واجهة بوابة الدفع. ضع خطة إدارتها بملء الحقول.←
مسار الدخول يقبل معرّف جلسة من العميل (تثبيت) ويضع كوكيًّا بلا حماية. أصلحه: معرّف جديد من الخادم، وكوكي بخصائص آمنة.←خطة إدارة أسرار «رفيق»متوسط · الدرس 26: تخزين الأسرار والمفاتيح وتدويرها
يملك متجر «رفيق» أسرارًا: كلمة مرور قاعدة البيانات، ومفتاح توقيع JWT، ومفتاح واجهة بوابة الدفع. ضع خطة إدارتها بملء الحقول.←
الوحدة 12: التحقق من الإدخال والوصول المصرح به
تحقّق من التذاكرمتقدم · الدرس 27: التحقق من المدخلات بقائمة المسموح
مسار إنشاء التذكرة يقبل أي حقول وينسخ الجسم كله (إسناد جماعي) بلا تحقق. أصلحه: تحقّق من العنوان والأولوية، واختر الحقول بالاسم.←دقّق وأصلح: ثلاث ثغراتمتقدم · الدرس 28: مشروع: تدقيق تطبيق وإصلاح ثغراته
خادم «رفيق» فيه ثلاث ثغرات: حقن SQL في البحث، و IDOR في الملاحظات، و XSS في التعليقات. أصلح الثلاث دون كسر الوظائف. هذا مشروع المقرر.←
مسار إنشاء التذكرة يقبل أي حقول وينسخ الجسم كله (إسناد جماعي) بلا تحقق. أصلحه: تحقّق من العنوان والأولوية، واختر الحقول بالاسم.←دقّق وأصلح: ثلاث ثغراتمتقدم · الدرس 28: مشروع: تدقيق تطبيق وإصلاح ثغراته
خادم «رفيق» فيه ثلاث ثغرات: حقن SQL في البحث، و IDOR في الملاحظات، و XSS في التعليقات. أصلح الثلاث دون كسر الوظائف. هذا مشروع المقرر.←