ما هي رؤوس HTTP؟
رؤوس HTTP أسطر بيانات وصفية تُرفق مع كل طلب واستجابة بين المتصفّح والخادم. لا يراها الزائر، لكنها تتحكم في الكثير: كيف يُخزَّن المحتوى، أي مصادر يُسمح بتحميلها، نوع الملف المرسل، وحالة الأمان. إتقانها فرق جوهري بين موقع آمن سريع وآخر هشّ بطيء.
كل رأس زوج من اسم وقيمة، مثل Content-Type: text/html. المتصفّح يقرأ هذه الرؤوس قبل عرض الصفحة ويتصرّف وفقها. أخطاء بسيطة في الرؤوس قد تفتح ثغرات أمنية أو تبطئ الموقع دون أن يلاحظ أحد السبب.
رؤوس الطلب مقابل الاستجابة
رؤوس الطلب يرسلها المتصفّح إلى الخادم: مثل User-Agent (هويّة المتصفّح)، Accept-Language (اللغة المفضّلة)، وCookie (بيانات الجلسة). أما رؤوس الاستجابة فيرسلها الخادم: مثل Content-Type، Cache-Control، ورؤوس الأمان.
مثال على استجابة نموذجية:
HTTP/2 200 content-type: text/html; charset=utf-8 cache-control: max-age=3600 strict-transport-security: max-age=31536000 content-security-policy: default-src 'self' x-content-type-options: nosniff
فهم الفريقين يساعدك على تشخيص المشاكل: هل الخطأ في ما يرسله المتصفّح أم في ما يجيب به الخادم؟
رؤوس الأمان الأساسية
X-Content-Type-Options
قيمته nosniff تمنع المتصفّح من تخمين نوع الملف، ما يسدّ ثغرات يُحمّل بها كود خبيث متنكّر في صورة. رأس بسيط يجب أن يكون في كل موقع.
X-Frame-Options
يتحكّم في إمكانية وضع موقعك داخل إطار (iframe) في موقع آخر. قيمته DENY أو SAMEORIGIN تحميك من هجمات Clickjacking التي تخدع المستخدم للنقر على شيء مخفيّ.
Referrer-Policy
يحدّد كم من معلومات الإحالة تُرسل عند الانتقال لموقع آخر. ضبطه يحمي خصوصية مستخدميك ويمنع تسريب مسارات داخلية حسّاسة عبر عنوان الإحالة.
سياسة أمان المحتوى CSP
رأس Content-Security-Policy هو أقوى دفاع ضد هجمات حقن السكربتات (XSS). يحدّد بدقة المصادر المسموح للصفحة تحميلها: سكربتات، صور، أنماط، خطوط. أي مصدر خارج القائمة يرفضه المتصفّح، فحتى لو نجح مهاجم بحقن كود، لا يُنفَّذ.
مثال صارم يسمح فقط بمصادر موقعك:
content-security-policy: default-src 'self'; script-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'
ابدأ بسياسة فضفاضة في وضع Report-Only لرصد ما تكسره دون منعه، ثم شدّدها تدريجيًا. CSP المتقنة تتطلب صبرًا لكنها تقفل بابًا كاملًا من أخطر الهجمات.
HSTS وفرض https
رأس Strict-Transport-Security يأمر المتصفّح بعدم زيارة موقعك إلا عبر https، حتى لو كتب المستخدم http. هذا يسدّ ثغرة الفترة القصيرة قبل إعادة التوجيه، التي يستغلّها المهاجمون لاعتراض الاتصال الأول.
قيمة شائعة: max-age=31536000; includeSubDomains أي سنة كاملة لكل النطاقات الفرعية. لا تفعّله إلا بعد التأكد أن كل شيء يعمل على https، لأن التراجع عنه صعب ما دامت المدّة سارية في متصفّحات الزوّار.
رؤوس الأداء والتخزين المؤقت
رأس Cache-Control يقرّر كم يحتفظ المتصفّح بالملف قبل إعادة طلبه. ضبطه الصحيح يسرّع الموقع كثيرًا ويقلّل حمل الخادم. الملفات الثابتة (صور، سكربتات بأسماء مبصومة) تستحق max-age طويلًا، بينما صفحات HTML المتغيّرة تحتاج قيمًا أقصر.
رأس Content-Encoding: gzip أو br يفعّل الضغط الذي يقلّص حجم النقل بشكل كبير. ورأس ETag يتيح التحقق إن تغيّر الملف دون إعادة تنزيله كاملًا. هذه الرؤوس مجتمعة هي عمود فقري لأداء الويب.
كيف تختبر رؤوسك؟
أداة فحص رؤوس HTTP تعرض كل رؤوس الاستجابة لأي رابط، وتنبّهك للرؤوس الأمنية الناقصة. اجعل فحصها جزءًا من روتين النشر: كل إطلاق جديد تأكّد أن رؤوس الأمان لم تُحذف بالخطأ.
أكمل صورة بنيتك التحتية بفحص شهادة SSL وسجلات DNS — الأمان منظومة متكاملة من الشهادة والرؤوس والإعدادات معًا.