تطبيق الويب: Client و Server و Database

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

01 / ملخص الدرس

تطبيق الويب: Client و Server و Database

الـ Frontend والـ Backend وقاعدة البيانات، والـ Cookies والـ Sessions، وفين الأماكن اللي المهاجم بيدخل منها.

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

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

أهلاً بيك. عرفنا الـ request والـ response. النهاردة هنشوف إيه اللي بيحصل جُوّه الموقع نفسه… لأن هنا بالزبط الأماكن اللي المهاجم بيدوّر عليها.

أي تطبيق ويب ليه تلات أجزاء. الـ Frontend، اللي إنت شايفه في المتصفح. الـ Backend، الـ code اللي شغال على الـ server. وقاعدة البيانات، اللي فيها المستخدمين والأوردرات والفلوس. وأهم قاعدة: الـ Frontend ده في إيد المستخدم. أي حماية معمولة في المتصفح بس… المهاجم يقدر يشيلها في ثانْيَة. الحماية الحقيقية لازم تبقى في الـ Backend.

طيب الموقع بيفتكرك إزاي بعد ما تعمل login؟ بيديك حاجة اسمها Cookie، جُوّاها رقم مميز اسمه Session ID. ومع كل request، المتصفح بيبعته تاني. يعني اللي معاه الـ Session ID ده… الموقع هيفتكره إنت. تعالى نعمل backend صغير بـ Python، فيه login. dictionary فيها المستخدمين، و function بتقارن الباسورد. نشغّل… الباسورد الصح True، والغلط False.

main.py
users = {
    "ahmed": "pass123",
    "sara": "s@ra2024",
}

def login(username, password):
    return users.get(username) == password

print(login("ahmed", "pass123"))
print(login("ahmed", "wrong"))

المخرجات

True
False

بس خد بالك من حاجة خطيرة في الـ code ده. الباسوردات متخزّنة زي ما هي، plain text. لو حد وصل لقاعدة البيانات، هيقرا كل الباسوردات على طول. وده هنصلّحه في درس الـ Hashing.

طيب المهاجم بيدخل منين؟ من الـ Entry Points، يعني أي مكان المستخدم بيدخّل فيه بيانات. خانات الـ forms. الـ parameters اللي في الـ URL. الـ headers والـ cookies. والملفات اللي بترفعها. دورك: جرّب login بـ username مش موجود خالص، زي hacker. وشوف النتيجة.

تمرين

ضيف print(login("hacker", "x")) وشغّل.

الحل: نشغّل… False. والـ function اتعاملت مع user مش موجود من غير ما تقع.

main.py
users = {
    "ahmed": "pass123",
    "sara": "s@ra2024",
}

def login(username, password):
    return users.get(username) == password

print(login("ahmed", "pass123"))
print(login("ahmed", "wrong"))
print(login("hacker", "x"))

المخرجات

True
False
False

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

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مراجعة نهائية: سيناريو كامل، وإنت رايح فين