الـ DNS والـ HTTP: إزاي الموقع بيفتح؟

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

01 / ملخص الدرس

الـ DNS والـ HTTP: إزاي الموقع بيفتح؟

الـ DNS بيحوّل الاسم لـ IP، والـ HTTP Request والـ Response، والـ Methods، والـ Status Codes، والـ Headers.

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

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

أهلاً بيك. لما بتكتب اسم موقع في المتصفح وتدوس Enter… بيحصل حاجات كتير في أقل من ثانْيَة. النهاردة هنفهمهم واحدة واحدة، لأن أغلب الهجمات اللي جاية في الكورسات… هجمات على الويب.

أول خطوة: الـ DNS. الأجهزة بتفهم IP، والناس بتحفَظ أسماء. الـ DNS زي دليل التليفونات: تديله اسم الموقع، يرجّع لك الـ IP بتاعه.

تاني خطوة: المتصفح بيبعت HTTP Request للـ server. أول سطر فيه الـ Method، والـ path، ونسخة HTTP. وبعده Headers، معلومات زيادة زي اسم الموقع ونوع المتصفح. وساعات Body، فيه البيانات اللي بتبعتها، زي الـ username والـ password. وأشهر الـ Methods اتنين. GET، يعني هات لي صفحة. و POST، يعني خد البيانات دي، زي لما بتعمل login. وفيه كمان PUT و DELETE، وهتقابلهم في الـ APIs. نشوف شكل الـ request بنفسنا. ده مجرد text… سطور ورا بعض. نشغّل…

main.py
request = (
    "GET /login HTTP/1.1\n"
    "Host: shop.example.com\n"
    "User-Agent: Firefox\n"
)

print(request)

المخرجات

GET /login HTTP/1.1
Host: shop.example.com
User-Agent: Firefox

وهنا أهم فكرة في أمن الويب كله: الـ request ده المستخدم هو اللي بيبعته. يعني يقدر يغيّر أي حاجة فيه: الـ path، والـ headers، والـ body. علشان كده الـ server ما ينفعش يِسِق في أي حاجة جاية منه.

والـ server بيرد بـ HTTP Response. أول حاجة فيه رقم اسمه Status Code. اللي بيبدأ بـ اتنين، يعني تمام. تلاتة، يعني روح مكان تاني. أربعة، يعني الغلط منك. خمسة، يعني الغلط من الـ server. والأرقام دي بتقول للمهاجم حاجات كتير. مِسال: لو صفحة رجّعت four oh three، يبقى الصفحة موجودة بس ممنوعة. ولو رجّعت five hundred بعد ما غيّرت حاجة في الـ request… يبقى غالباً لمست حاجة حساسة. نشغّل…

main.py
codes = {
    200: "OK",
    403: "Forbidden",
    404: "Not Found",
    500: "Server Error",
}

for c in [200, 403, 500]:
    print(c, codes[c])

المخرجات

200 OK
403 Forbidden
500 Server Error

دورك: ضيف status code four oh one، ومعناه Unauthorized، واطبعه.

تمرين

ضيف 401: "Unauthorized" وضيف 401 للـ list.

الحل: نشغّل…

main.py
codes = {
    200: "OK",
    401: "Unauthorized",
    403: "Forbidden",
    404: "Not Found",
    500: "Server Error",
}

for c in [200, 401, 403, 500]:
    print(c, codes[c])

المخرجات

200 OK
401 Unauthorized
403 Forbidden
500 Server Error

الدرس الجاي: نجمّع الصورة كلها… الـ client، والـ server، وقاعدة البيانات، وإزاي تطبيق الويب بيشتغل. يلا بينا.

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