فهم طريقة عمل الويب

مقدمة

فهم آلية عمل الويب هو الخطوة الأولى لاكتشاف الثغرات الأمنية، لأن معظم هذه الثغرات تنتج عن استغلال أخطاء في طريقة تفاعل النظام مع مدخلات الويب.

ودعنا لا نخلط بين الويب (Web) و الإنترنت (Internet)؛ فالإنترنت هي البنية التحتية التقنية والشبكات التي تجعل من الويب أمراً ممكناً، ومن خلال الإنترنت يمكننا الوصول إلى الويب وتصفحه.

ما هو الويب؟

الويب هو نظام يُمكّن من تصفح وعرض مستندات أو صفحات ويب مكونة من (HTML, CSS, JavaScript). يمكن تصفح الويب من خلال متصفحات مثل جوجل كروم (Google Chrome) وفايرفوكس (Firefox).

يعتمد الويب على عدد من التقنيات الأساسية لكي يعمل:

  • تقنية HTTP: بروتوكول نقل النص التشعبي، وهو لغة التخاطب بين المتصفح والخادم.
  • تقنية URL: محدد موقع المعلومات، وهو العنوان الفريد لكل صفحة أو مورد على الويب.
  • تقنية HTML: لغة الهيكلة الأساسية لعرض محتوى صفحات الويب.
  • تقنية DNS: نظام أسماء النطاقات، ويعمل كـ “دليل هاتف” يحول أسماء المواقع المقروءة مثل “google.com” إلى عناوين شبكية (IP Addresses) مثل “142.250.206.174” .

كيف يعمل الويب؟ (خلف الكواليس)

بطريقة تقنية، هذا ما يحصل خلف كواليس الإنترنت عندما تطلب صفحة ويب:

  1. إدخال الرابط: يقوم المستخدم بكتابة أو الضغط على رابط الموقع المراد زيارته (مثل google.com).
  2. فحص الذاكرة : يقوم المتصفح بمراجعة الذاكرة (DNS Cache) للتحقق مما إذا كان الموقع قد تمت زيارته مؤخراً وعنوان الـ IP الخاص به محفوظ محلياً على الجهاز.
  3. الاستعلام من خادم DNS: إن لم يجد المتصفح العنوان محلياً، يقوم بإرسال طلب لخادم الـ DNS ليزوده بعنوان الـ IP المطلوب للموقع.
  4. إرسال الطلب (Request): بعد الحصول على الـ IP، يقوم المتصفح بإرسال طلب إلى خادم الموقع للبدء بالاتصال.
  5. استلام الاستجابة (Response): يقوم الخادم بمعالجة الطلب وتزويد المتصفح بالصفحة المطلوبة، والتي تتكون أساساً من ملفات HTML، CSS، و JavaScript.
  6. عرض الصفحة: أخيراً، يقوم المتصفح بتجميع كل هذه المكونات وترجمتها لعرض صفحة الويب المرئية للمستخدم.
sequenceDiagram
    autonumber
    participant U as <br/>(User) المستخدم
    participant B as <br/>(Browser) المتصفح
    participant D as  DNS<br/>(DNS Server) خادم الـ
    participant S as <br/>(Web Server) خادم الويب

    U->>B: <br/>(URL Request) طلب عنوان الموقع
    Note over B: <br/>(DNS Cache) فحص الذاكرة المخبأة
    
    alt العنوان غير موجود
        B->>D:  IP<br/>(IP Query) طلب عنوان الـ
        D-->>B: <br/>(IP Address) إرسال العنوان الشبكي
    else العنوان موجود مسبقاً
        Note over B: استخدام العنوان المحفوظ
    end

    Note over B,S: <br/>(TCP/TLS Handshake) بدء عملية الاتصال
    
    B->>S: <br/>(HTTP Request) إرسال طلب الوصول
    S-->>B: <br/>(HTML / CSS / JS) إرسال ملفات الصفحة
    
    Note over B: <br/>(Browser Rendering) بناء الصفحة
    B-->>U: <br/>(UI Display) عرض الواجهة النهائية

نموذج الخادم والعميل (Client-Server Model)

هو بنية شبكات أساسية يقوم فيها العميل بإرسال طلبات (Requests) إلى الخادم، وبدوره يقوم الخادم بمعالجتها وإرسال الاستجابة (Response) إلى العميل. هذا هو نفس الهيكل الذي يشغل الويب.

  • العميل (Client): جهاز أو برنامج يطلب البيانات أو الخدمات (مثل متصفح الويب).
  • الخادم (Server): نظام حاسوبي قوي يقوم بتخزين الموارد، إدارة البيانات، والاستجابة لطلبات العملاء.
  • آلية الطلب والاستجابة: يتبع الاتصال دورة منظمة؛ يُرسل العميل طلباً، ويُعيد الخادم الاستجابة.

أنواع بنية الخادم والعميل (Types of Client-Server Architecture)

1. البنية ذات الطبقتين

(2-Tier Architecture) في هذه البنية، يتواصل العميل مباشرة مع الخادم، الذي يتحمل عادةً مسؤولية المعالجة وتخزين البيانات معًا.

  • تتكون من طبقتين: طبقة العميل وطبقة الخادم.
  • يتعامل العميل مع واجهة المستخدم وقد ينفذ بعض المعالجة قبل إرسال الطلب.
  • يقوم الخادم بمعالجة طلبات العملاء وإدارة قاعدة البيانات.
  • الاستخدام: مناسبة للتطبيقات الصغيرة، ولكن يصعب توسيعها وإدارتها عند اتصال عدد كبير من العملاء في الوقت نفسه.

2. البنية ذات الثلاث طبقات

(3-Tier Architecture) ينقسم النظام هنا إلى ثلاث طبقات لتحسين الأداء، الأمان، وقابلية التوسع.

  • طبقة العرض (العميل): واجهة المستخدم.
  • طبقة التطبيق (المنطق التجاري - Business Logic): تعالج الطلبات وتطبق القواعد.
  • طبقة البيانات (خادم قاعدة البيانات - Database Server): تخزن وتسترجع البيانات.
  • الاستخدام: تُستخدم على نطاق واسع في تطبيقات الويب الحديثة، حيث تعزز الأمان لأن قاعدة البيانات لا تكون مكشوفة مباشرة للعملاء.

المزايا والقيود لنموذج الخادم والعميل

المزايا:

  • مركزية البيانات والخدمات مما يسهّل الإدارة والتحديثات.
  • تعزيز الأمان عبر تطبيق ضوابط الوصول والمصادقة على مستوى الخادم.
  • ضمان اتساق البيانات، إذ يحصل العملاء على المعلومات من مصدر مركزي موثوق.
  • سهولة الصيانة والتحديث من جهة الخادم دون الحاجة لتحديث كل عميل على حدة.

القيود:

  • نقطة فشل واحدة (Single Point of Failure): إذا تعطل الخادم، تتوقف الخدمة.
  • قد تحدث اختناقات في الشبكة عند تدفق عدد هائل من الطلبات في وقت واحد.
  • تتطلب تكاليف أعلى لتوفير خوادم قوية (عتاد، سعة تخزين، وتوافر مستمر).
  • الاعتماد الكلي على استقرار الاتصال الشبكي.

جهة العميل مقابل جهة الخادم

في الويب الذي يعمل ببنية العميل والخادم، هناك جهتان لمعالجة البيانات وتوضحان أين يتم تشغيل الكود:

1. جهة العميل (Client-Side)

يعني كل شيء يحدث على جانب المستخدم (المتصفح)، مثل:

  • عرض الصفحة المكونة من (HTML, CSS, JS) وتنسيقها.
  • تنفيذ السكريبتات والتفاعلات المباشرة (مثل النقر على زر أو التحقق من صحة بريد إلكتروني شكلياً).
  • لماذا تُستخدم؟ لتخفيف العبء عن الخادم، تقليل استهلاك النطاق الترددي (Bandwidth)، وتوفير استجابة أسرع للمستخدم دون الحاجة للاتصال بالشبكة في كل خطوة صغيرة.

2. جهة الخادم (Server-Side)

يعني كل شيء يحدث على جانب الخادم البعيد، مثل:

  • تخزين واسترجاع البيانات من قواعد البيانات.
  • معالجة العمليات المعقدة والمنطق الحساس للتطبيق.
  • لماذا تُستخدم؟ لأنها تتطلب الوصول إلى معلومات غير متاحة للعميل، ولأسباب تتعلق بالأمان (لا يمكن الوثوق بالعميل في معالجة بيانات حساسة مثل كلمات المرور أو العمليات المالية).

لماذا هذا مهم في الأمن السيبراني؟

كمتخصص أو مهتم باكتشاف الثغرات واختبار الاختراق، فإن فهمك العميق للفرق بين جهة العميل وجهة الخادم هو سلاحك الأهم. الكثير من الثغرات (مثل التلاعب بالأسعار أو تجاوز الصلاحيات) تحدث عندما يثق الخادم بمدخلات العميل دون التحقق منها بشكل صارم (Server-Side Validation). التلاعب بالطلبات (Requests) من جهة العميل قبل وصولها للخادم يفتح الباب لاكتشاف أخطاء منطقية وثغرات خطيرة.


المراجع: