رؤوس الأمان التي لا تزال معظم المواقع تتخطاها: بيانات من 49 تدقيقات حقيقية
رؤوس الاستجابة هي أسطر واحدة من التكوين تُرسل مع أي نشر. عبر المواقع التي نراجعها، غالبيةها لا ترسل أي منها — Permissions-Policy غير موجود على 69%، وأفضل رأس متبنى في القائمة لا يزال مفقودًا على 41%.
في هذا التقرير قرأنا 6 رؤوس أمان من الاستجابة النهائية للصفحة الرئيسية لكل موقع جرى تدقيقه، بعد إعادة التوجيه. الرأس الذي يُرسَل فقط على قفزة ما قبل إعادة التوجيه لا يُحتسب، لأن المتصفح لا يطبّقه على الصفحة أبدًا. السؤال محدد عمدًا: هل حملت الاستجابة الرأس على الإطلاق.
عبر 49 مواقع تم تدقيقها بين مايو 23 وAugust 31, 2026، الإجابة عادةً لا. Permissions-Policy مفقود على 69% منها، Referrer-Policy على 65%، Content-Security-Policy على 61%، X-Frame-Options على 51%، X-Content-Type-Options على 43%، وStrict-Transport-Security — أفضل تبني من 6 — على 41%.
المنهجية: أحدث لقطة تدقيق مكتملة لكل نطاق من مجموعتنا الحالية، تقريبًا مايو 23 – August 31, 2026، 49 نطاقات مميزة، مجهولة. كل نسبة تمثل حصة المواقع التي لم تحمل رأسًا في استجابة الصفحة الرئيسية. العينة مختارة ذاتيًا — أصحاب الذين أجروا تدقيقًا — وتميل نحو المواقع الصغيرة والمتوسطة، التي من المحتمل أن تقلل من تبني الرؤوس عبر الويب ككل، لأن المنصات الكبيرة تُضبط هذه على الحافة. عامل الحصص كاتجاهات للذيل الطويل.
هذه الأرقام تحصي الوجود لا الجودة
الدقة في القياس مهمة هنا، لأنها تحدد السقف لما يمكن أن تدعيه هذه الأرقام.
تصف الأرقام استجابة 1 لكل موقع: الصفحة الرئيسية، بعد إعادة التوجيه. الوجود يعني قيمة غير فارغة، لا أكثر. رأس Strict-Transport-Security الذي تكون قيمة max-age فيه 1 ثانية يُحتسب موجودًا، وكذلك Content-Security-Policy متساهل بما يكفي للسماح بأي شيء. الوجود لا يقول شيئًا عن مدى إحكام بناء السياسة.
يبدو ذلك بمثابة مقياس ضعيف حتى تأخذ في الاعتبار ما يقيسه. رأس بأي قيمة على الإطلاق هو دليل على أن إنسانًا قد فتح إعدادات الخادم مرة، أو قاعدة CDN، أو ملف وسيط وكتب توجيهًا. القياس هو اختبار ما إذا كانت طبقة التكوين للموقع قد تم لمسها عمدًا — وهذا هو سبب كون معدلات الفشل الجزء المثير للاهتمام، وليس معدلات النجاح.
تفصيلان يحددان ما إذا كان الرأس الذي ترسله بالفعل يحمي أي شيء:
- CSP في وضع التقرير فقط لا يفرض شيئًا. يسجّل
Content-Security-Policy-Report-Onlyالانتهاكات دون حظرها. إنه الطريقة الصحيحة للبدء، لكن إلى أن يُرسَل رأسContent-Security-Policyالذي يفرض السياسة، فإنها لا تحمي شيئًا. frame-ancestorsوX-Frame-Options يصلان إلى عملاء مختلفين. توجيه CSPframe-ancestorsهو التحكم الأفضل، والعملاء الأقدم لا يقرؤون إلا الرأس القديمX-Frame-Options. أرسل كليهما.
تتبع التبني مدى قديم الرأس، وليس مدى صعوبة تطبيقه
ترتيب معدلات الفشل قريب من العكس الزمني. HSTS، أقدم من الـ 6 وقابل للتبديل في كل لوحة تحكم CDN رئيسية، هو الأكثر تبنيًا. X-Content-Type-Options و X-Frame-Options، كلاهما تقاليد بائع طويلة الأمد قبل خلفائهما الرسميين، يجلسان في الوسط. سياسة المراجع Referrer-Policy وسياسة الأذونات Permissions-Policy، أحدثهما، هما الأكثر نقصًا — وPermissions-Policy، التي لا يضبطها أي مضيف شائع نيابةً عنك، هو الأخير.
لا أحد منهما أصعب من الآخر من حيث الهندسة. 5 من الـ 6 هي سطر ثابت واحد في كتلة الخادم، قاعدة CDN، أو ملف وسائط حافة، بدون تغييرات تطبيقية وبدون مخاطر سلوكية. ما يفرّقهم هو المدة التي كان لديهم فيها لتجميع القيم الافتراضية وعدد منشورات المدونة، قوائم التحقق، وقوالب الإطار التي استوعبتها. رأينا نفس الشكل عندما صنّفنا كل فحص فاشل عبر تاريخ تدقيقنا: رؤوس الردات هي المسيطرة في أعلى القائمة، فوق التوحيد القياسي، العرض، والأداء. شمل هذا التصنيف نافذة مختلفة، عينة مختلفة، ومجموعة فحوصات أقدم، لذا مجموعات النسب المئوية غير خط اتجاه — لكن موضع الرؤوس في أعلى كلاهما هو النتيجة الدائمة.
السبب الهيكلي الآخر هو الاختفاء. رأس مفقود لا يغيّر شيء على الشاشة. لا يخطئ CMS، لا يفشل البناء، لا تتحول لوحة التحكم إلى الأحمر. الغياب يُلاحظ فقط من شيء يفحص الردود الخام — وهو بالضبط ما يفعله التدقيق، حالة أمان المتصفح، ونسبة متزايدة من القراء الآليين. هو نفس عدم المساواة التي وجدناها في توافق العرض: ما يراه البشر في المتصفح وما تتلقاه الآلات عبر HTTP قد تباعد بهدوء.
ما يحميه كل رأس
Strict-Transport-Security يخبر المتصفح برفض HTTP النصي لاسم نطاقك لفترة محددة، مما يغلق نافذة إعادة التوجيه التي يمكن للمهاجم على الشبكة اختراقها قبل أن يُطلق إعادة التوجيه http:// → https:// الخاص بك. هو أيضاً الرّأس الوحيد في القائمة الذي يحمل التزاماً: المتصفّحات تحترم max-age حتى لو قمت لاحقاً بكسر HTTPS. ابدأ قصيراً، وتأكد من أن كل نطاق فرعي ومُصول يُقدّم نظيفاً عبر TLS، ثم وسّع.
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy يحدّد أماكن ظهور السكريبتات، الأنماط، الأطر، والاتصالات. هو الرّأس الوحيد هنا الذي يحتوي على حادثة بدلاً من منع فئة واحدة: عندما يُخالف مدير العلامات أو يصل إدخال المستخدم إلى الـ DOM، يقرّر CSP ما إذا كان السكريبت المُحقن يمكنه التنفيذ أو الوصول إلى خادم يختاره. هو أيضاً الوحيد الذي يمكنه كسر صفحة تعمل، ولهذا ينتمي إلى نهاية التسلسل أدناه.
Content-Security-Policy-Report-Only: default-src 'self'
X-Frame-Options يعلن ما إذا كان أصول أخرى يمكنها وضع صفحاتك في إطار. بدونها، يمكن لواجهة المستخدم الخاصة بك أن تُدمج تحت طبقة شفافة على صفحة مهاجم وتُنقر عليها المستخدمون الذين يعتقدون أنهم على موقعك. يُعَبِّر CSP الحديث عن ذلك بشكل أفضل مع frame-ancestors; أرسل الاثنين، لأن العملاء الأقدم لا يقرؤون إلا الرأس القديم.
X-Frame-Options: DENY
X-Content-Type-Options يمنع المتصفّحات من تخمين نوع الاستجابة عندما يبدو الـ Content-Type المعلن خاطئاً. التعرّف هو الطريقة التي يمكن بها ملف مرفوع يُقدّم كنص أن يُنفّذ كسكريبت بدلاً من ذلك. الرّأس يحتوي بالضبط على قيمة 1 صالحة.
X-Content-Type-Options: nosniff
Referrer-Policy تحكم مقدار الـ URL الحالي الذي يسافر إلى أطراف ثالثة عند النقرات الخارجية وتحميل الموارد الفرعية. تحمل عناوينك URL مع معلمات الحملات، استعلامات البحث الداخلية، معرفات الحساب، وأحياناً رموز، وكل بكسل تحليلي وخط CDN على الصفحة هو مستلم. اتحدّ المتصفّحات الحديثة إلى افتراضي معقول، لكن الافتراضي هو قرار يتخذه وكيل المستخدم لك ويختلف حسب العميل؛ إرسال الرّأس يجعل سياسيتك صريحة، ويسمح لموقع يتعامل مع URLs حساسة باختيار شيء أكثر صرامة، مثل same-origin.
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy يقرّر أي قدرات متصفح يمكن لوثيقتك وأطرها المدمجة طلبها — الكاميرا، الميكروفون، تحديد الموقع، وباقي قائمة الميزات القوية. غياب الرّأس يجعل كل ما لم تُعطِه إيقافاً متاحاً لكل سكريبت على الصفحة، بما في ذلك العلامات الخارجية التي لم تكتبها. أرفض ما لا تستخدمه.
Permissions-Policy: camera=(), microphone=(), geolocation=()
أرسل 4 الأسطر الواحدة أولاً، ثم اقضِ بعدراً على CSP
تتعارض القيمة الوقائية ومخاطر النشر على رأس 1 بالضبط، ويحل ترتيب الإصلاح الخلاف لصالح الإرسال.
Diagram source
graph TD
A[اقرأ رؤوس الاستجابة الخاصة بك] --> B[نشر 1: HSTS مع فترة أقصاها قصيرة]
B --> C[نشر 2: nosniff، Referrer-Policy، Permissions-Policy، X-Frame-Options]
C --> D[وسّع فترة HSTS بمجرد تأكيد TLS في كل مكان]
D --> E[CSP في وضع التقرير فقط]
E --> F{تقارير الانتهاك نظيفة?}
F -->|لا| G[ضبط المصادر، احتفظ بوضع التقرير فقط]
G --> F
F -->|نعم| H[فرض CSP، إضافة frame-ancestors]نشر 1 — HSTS، قصير. قيمة وقائية عالية، وخطر شبه صفر عندما يقدم موقعك HTTPS في كل مكان. اضبط max-age بسيطًا أولًا حتى يبقى مشكلة TLS على نطاق فرعي نسيانها قابلة للاسترداد.
نشر 2 — الأسطر الثابتة الـ 4 معًا. nosniff, Referrer-Policy, Permissions-Policy و X-Frame-Options قيم ثابتة لا تعتمد على التطبيق. هي 4 من الرؤوس الـ 6، وفي هذه معدلات الفشل، غالبية ما يفتقده موقع متوسط. لا يوجد سبب لتقسيمها بشكل منفصل.
ثم امتد HSTS، بمجرد تأكيد أن كل مضيف تحت النطاق يقدم نظيفًا عبر TLS.
أخيرًا — CSP، في وضع التقرير فقط. نشر Content-Security-Policy-Report-Only، جمع الانتهاكات من حركة المرور الحقيقية، وتعداد مصادر السكربت والاتصال التي تعتمد عليها فعليًا. فقط بعد ذلك قم بتبديل الرؤوس إلى فرضية وأضف frame-ancestors بجانب سطر X-Frame-Options الخاص بك. أعلى جهد، وأخيرًا في التسلسل، لأنه العنصر الوحيد في القائمة الذي يمكن أن يوقف صفحة عمل.
اقرأ رؤوسك الخاصة في أمر 1
القياس الكامل قابل للتكرار من طرفية. اتبع إعادة التوجيهات، لأن الاستجابة النهائية هي التي يطبّقها المتصفح:
curl -sSL -o /dev/null -D - https://example.com/ \| grep -iE 'strict-transport-security|content-security-policy|x-frame-options|x-content-type-options|referrer-policy|permissions-policy'
كل سطر لا يعود هو رأس لا ترسله صفحتك الرئيسية. كل 6 العائد يعني أن شريط الحضور قد تم مسحه والسؤال التالي — هل السياسات نفسها جيدة — يستحق السؤال. يسرد تشخيص SEOReport المدفوع كل رأس غائب مع القيمة التي تعالجه.
رؤوس هذا المجموع البيانات غير مفقودة لأنها صعبة أو مثيرة للجدل. هي مفقودة لأن لا شيء في الحياة العادية لموقع ويب يظهر غيابها: لا خطأ، لا تغيير بصري، لا بناء فاشل. المواقع التي تنجح هي تلك التي كان شخص ما، مرة واحدة، يبحث — وما زال ذلك النشر الوحيد متاحًا للأغلبية التي لم تنجح.
احصل على التشخيص الكامل لموقعك
تقرير مدعوم بالأدلة وخطة عمل مرتبة حسب الأولوية، ضمن خطة بأرصدة شهرية.