الـ DNS والـ HTTP: إزاي الموقع بيفتح؟
الـ DNS بيحوّل الاسم لـ IP، والـ HTTP Request والـ Response، والـ Methods، والـ Status Codes، والـ Headers.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
أهلاً بيك. لما بتكتب اسم موقع في المتصفح وتدوس Enter… بيحصل حاجات كتير في أقل من ثانْيَة. النهاردة هنفهمهم واحدة واحدة، لأن أغلب الهجمات اللي جاية في الكورسات… هجمات على الويب.
أول خطوة: الـ DNS. الأجهزة بتفهم IP، والناس بتحفَظ أسماء. الـ DNS زي دليل التليفونات: تديله اسم الموقع، يرجّع لك الـ IP بتاعه.
تاني خطوة: المتصفح بيبعت HTTP Request للـ server. أول سطر فيه الـ Method، والـ path، ونسخة HTTP. وبعده Headers، معلومات زيادة زي اسم الموقع ونوع المتصفح. وساعات Body، فيه البيانات اللي بتبعتها، زي الـ username والـ password. وأشهر الـ Methods اتنين. GET، يعني هات لي صفحة. و POST، يعني خد البيانات دي، زي لما بتعمل login. وفيه كمان PUT و DELETE، وهتقابلهم في الـ APIs. نشوف شكل الـ request بنفسنا. ده مجرد text… سطور ورا بعض. نشغّل…
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… يبقى غالباً لمست حاجة حساسة. نشغّل…
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.
الحل: نشغّل…
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)
- 01أهلاً بيك — يعني إيه أمن سيبراني؟
- 02الكمبيوتر بيشتغل إزاي من جُوّه؟
- 03نظام التشغيل: المدير اللي بيدير كل حاجة
- 04الملفات والـ Users والصلاحيات
- 05صفر وواحد: Binary و Hex و Encoding
- 06الشبكات والـ IP Address
- 07الـ Ports والـ Protocols
- 08الـ DNS والـ HTTP: إزاي الموقع بيفتح؟انت هنا
- 09تطبيق الويب: Client و Server و Database
- 10مفاهيم الحماية: CIA Triad
- 11Vulnerability و Threat و Risk
- 12Authentication و Authorization
- 13Least Privilege و Defense in Depth
- 14الـ Hashing: إزاي نحفَظ الباسورد صح
- 15الـ Encryption: Symmetric و Asymmetric و HTTPS
- 16تفكير المهاجم: الثقة والمدخلات
- 17الـ Attack Surface والـ Attack Vectors
- 18الـ Social Engineering والـ Phishing
- 19أنواع المهاجمين، والأخلاق، والقانون
- 20أنواع الاختبار والـ Scope والـ Rules of Engagement
- 21مراحل اختبار الاختراق
- 22جهّز الـ Lab بتاعك
- 23مراجعة نهائية: سيناريو كامل، وإنت رايح فين