Authentication و Authorization

جارٍ التحميل…

01 / ملخص الدرس

Authentication و Authorization

الفرق بين «إنت مين؟» و «مسموح لك تعمل إيه؟»، والـ MFA، وأشهر غلطة في الـ Authorization: IDOR.

02 / شرح الدرس مكتوبًا

نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.

أهلاً بيك. أي نزام محترم لازم يسأل سؤالين. الأول: إنت مين؟ والتاني: مسموح لك تعمل إيه؟ والسؤالين دول ليهم اسمين مختلفين… وناس كتير بتخلط بينهم.

السؤال الأول اسمه Authentication. يعني النزام يتأكد إنك إنت فعلاً اللي بتقول عليه. زي الأمن على باب الشركة لما يبص على الكارنيه بتاعك. وأقوى طريقة إنك تجمع أكتر من نوع، وده اسمه MFA. يعني password، ومعاه code بيوصل على موبايلك. حتى لو المهاجم سرق الـ password… مش هيقدر يدخل من غير الموبايل.

السؤال التاني اسمه Authorization. بعد ما عرفنا إنت مين… مسموح لك تدخل أنهي أوضة؟ الموَزَّف العادي يدخل مكتبه، بس ما يدخلش أوضة الـ servers.

وأشهر غلطة في الـ Authorization اسمها IDOR. يعني الموقع بيعمل Authentication صح… بس مابيتأكدش إن الحاجة اللي بتطلبها بتاعتك. تغيّر رقم الأوردر في الـ URL… تشوف أوردر حد تاني. نشوفها بعينينا. أحمد عامل login، وطالب الأوردر رقم مِيّة واتنين… اللي هو بتاع سارة. نشغّل… أحمد شاف أوردر سارة! ده IDOR.

main.py
orders = {
    101: {"owner": "ahmed", "total": 250},
    102: {"owner": "sara", "total": 900},
}

def view_order(current_user, order_id):
    return orders[order_id]

print(view_order("ahmed", 102))

المخرجات

{'owner': 'sara', 'total': 900}

والحماية: قبل ما نرجّع الأوردر، نتأكد إن صاحبه هو اللي عامل login. ولو مش هو، نرجّع four oh three. نشغّل… أوردر سارة اترفض، وأوردر أحمد بان عادي.

main.py
orders = {
    101: {"owner": "ahmed", "total": 250},
    102: {"owner": "sara", "total": 900},
}

def view_order(current_user, order_id):
    order = orders[order_id]
    if order["owner"] != current_user:
        return "403 Forbidden"
    return order

print(view_order("ahmed", 102))
print(view_order("ahmed", 101))

المخرجات

403 Forbidden
{'owner': 'ahmed', 'total': 250}

دورك: خلّي الـ admin يقدر يشوف أي أوردر. يعني لو current_user هو admin، رجّع الأوردر على طول.

تمرين

ضيف شرط: if current_user == "admin": return order — قبل شرط الـ owner.

الحل: شرط زيادة قبل الشرط بتاع الـ owner. نشغّل…

main.py
orders = {
    101: {"owner": "ahmed", "total": 250},
    102: {"owner": "sara", "total": 900},
}

def view_order(current_user, order_id):
    order = orders[order_id]
    if current_user == "admin":
        return order
    if order["owner"] != current_user:
        return "403 Forbidden"
    return order

print(view_order("ahmed", 102))
print(view_order("admin", 102))

المخرجات

403 Forbidden
{'owner': 'sara', 'total': 900}

الدرس الجاي: مبدأين لو الشركات طبّقتهم، نُص الهجمات هتفشل… Least Privilege و Defense in Depth. يلا بينا.

03 / دروس المسار (23)
  1. 01أهلاً بيك — يعني إيه أمن سيبراني؟
  2. 02الكمبيوتر بيشتغل إزاي من جُوّه؟
  3. 03نظام التشغيل: المدير اللي بيدير كل حاجة
  4. 04الملفات والـ Users والصلاحيات
  5. 05صفر وواحد: Binary و Hex و Encoding
  6. 06الشبكات والـ IP Address
  7. 07الـ Ports والـ Protocols
  8. 08الـ DNS والـ HTTP: إزاي الموقع بيفتح؟
  9. 09تطبيق الويب: Client و Server و Database
  10. 10مفاهيم الحماية: CIA Triad
  11. 11Vulnerability و Threat و Risk
  12. 12Authentication و Authorizationانت هنا
  13. 13Least Privilege و Defense in Depth
  14. 14الـ Hashing: إزاي نحفَظ الباسورد صح
  15. 15الـ Encryption: Symmetric و Asymmetric و HTTPS
  16. 16تفكير المهاجم: الثقة والمدخلات
  17. 17الـ Attack Surface والـ Attack Vectors
  18. 18الـ Social Engineering والـ Phishing
  19. 19أنواع المهاجمين، والأخلاق، والقانون
  20. 20أنواع الاختبار والـ Scope والـ Rules of Engagement
  21. 21مراحل اختبار الاختراق
  22. 22جهّز الـ Lab بتاعك
  23. 23مراجعة نهائية: سيناريو كامل، وإنت رايح فين