رؤوس الأمان التي لا تزال معظم المواقع تتخطاها: بيانات من 49 تدقيقات حقيقية
رؤوس الاستجابة هي أسطر واحدة من التكوين تُرسل مع أي نشر. عبر المواقع التي نراجعها، غالبيةها لا ترسل أي منها — سياسة الأذونات غير موجودة على 69%، وأفضل رأس متبنى في القائمة لا يزال مفقودًا على 41%.
كل تدقيق نقوم به يقرأ رؤوس استجابة الصفحة الرئيسية. 6 منها تحمل حكمًا بالنجاح أو الفشل؛ CSP في وضع التقرير فقط وزوج العزل عبر الأصل يُبلغان للعرض ولا يُحتسبان أبدًا كفشل. يحدث القراءة على الجلب البسيط HTTP — نفس الالتقاط الذي يتلقاه الزاحف الذكي — وعلى الاستجابة النهائية بعد إعادة التوجيه، لذا فإن الموقع الذي يضبط رؤوسه فقط على القفزة قبل إعادة التوجيه لا يحصل على أي اعتراف بها. السؤال الذي يطرحه المحرك محدد عمدًا: هل حملت الاستجابة الرأس على الإطلاق. عبر 49 مواقع تم تدقيقها بين مايو 23 وAugust 31, 2026، الإجابة عادةً لا. سياسة الأذونات مفقودة على 69% منها، سياسة المراجع على 65%، سياسة أمان المحتوى على 61%، X-Frame-Options على 51%، X-Content-Type-Options على 43%، وStrict-Transport-Security — أفضل تبني من 6 — على 41%. المنهجية: أحدث لقطة تدقيق مكتملة لكل نطاق من مجموعتنا الحالية، تقريبًا مايو 23 – August 31, 2026، 49 نطاقات مميزة، مجهولة. كل نسبة هي حصة المواقع التي لم تحمل رأسًا في استجابة الصفحة الرئيسية. العينة مختارة ذاتيًا — أصحاب الذين أجروا تدقيقًا — وتميل نحو المواقع الصغيرة والمتوسطة، التي من المحتمل أن تقلل من تبني الرؤوس عبر الويب ككل، لأن المنصات الكبيرة تضبطها على الحافة. عامل الحصص كاتجاهات للذيل الطويل.
يطلب الفحص ما إذا كان الرأس موجودًا، وليس ما إذا كان جيدًا
الدقة في القياس مهمة هنا، لأنها تحدد السقف لما يمكن أن تدعيه هذه الأرقام.
يقرأ المحرك الصفحة الرئيسية فقط — واحدة URL، استجابة واحدة — ويأخذ قيم الرأس من الالتقاط البسيط-HTTP عندما يكون ذلك متاحًا، ويعود إلى الالتقاط الآخر للصفحة الرئيسية عندما لا يكون كذلك. الوجود يعني قيمة غير فارغة. لا يوجد تصنيف للضوابط: Strict-Transport-Security الذي max-age هو 1 ثانية يمر، وكذلك Content-Security-Policy كافٍ للسماح بأي شيء. لا شيء في حكم النجاح يقول إن السياسة مُبنية جيدًا.
يبدو ذلك بمثابة مقياس ضعيف حتى تأخذ في الاعتبار ما يقيسه. رأس بأي قيمة على الإطلاق هو دليل على أن إنسانًا قد فتح إعدادات الخادم مرة، أو قاعدة CDN، أو ملف وسيط وكتب توجيهًا. الفحص هو اختبار ما إذا كان طبقة التكوين للموقع قد تم لمسها عمدًا — وهذا هو سبب كون معدلات الفشل هي الجزء المثير للاهتمام، وليس معدلات النجاح.
يُعطى الخطورة لكل رأس بدلاً من التوزيع المتساوي. فشل Strict-Transport-Security وContent-Security-Policy عند درجة خطورة عالية. فشل خيارات الإطار، خيارات نوع المحتوى، سياسة المراجع وسياسة الأذونات عند مستوى متوسط. العزل عبر الأصل، الزوج COOP و COEP، هو فقط معلوماتي — يمر عندما يكون أي من الرؤوس موجودًا وإلا يُبلغ بقرار معلوماتي، لا فشل، لأن هذه الرؤوس تحكم قدرات المتصفح المتقدمة بدلاً من الدفاعات الأساسية.
هناك سلوكان يستحقان المعرفة قبل قراءة تقريرك الخاص:
- CSP فقط للتقرير لا يفي بفحص CSP. يبحث المحرك تحديدًا في
Content-Security-Policy. الموقع الذي يعمل فقط بـContent-Security-Policy-Report-Onlyيفشل فحص التنفيذ ويتلقى قرارًا معلوماتيًا منفصلًا يوضح أن الانتهاكات مسجلة ولكن لا تُحظر. هذا القرار موجود فقط عندما يكون أحد رؤوس CSP موجودًا. frame-ancestorsلا يفي بفحص خيارات الإطار. يقرأ المحرك رأسX-Frame-Optionsبنفسه. CSP حديث مع توجيهframe-ancestorsهو التحكم الأفضل، والموقع الذي يرسله مع حذف الرأس القديم سيظل يرى فشل الفحص.
هناك أيضًا ملاءمة منصة واحدة في الكود. عندما يأتي الرد من Vercel وتحمّل الصفحة نص Vercel BotID، فشل CSP المفقود لا يزال يحدث، لكن عند مستوى متوسط بدلاً من عالٍ، مع ملاحظة توضح أن BotID يحتاج إلى سماح بالسكريبتات المضمنة التي تقاوم تنفيذ CSP الصارم. يمكن للموقع توثيق القيد عمدًا بوضع تعليق HTML مثل <!-- seoreport-ignore: vercel-botid-csp --> في أول 1 كيلوبايت من الصفحة الرئيسية؛ عندما تُذكر أسماء CSP أو BotID، ينخفض الفحص إلى قرار معلوماتي بدلاً من فشل. هذا هو القفل الوحيد في العائلة، ويُوجد لأنه لا ينبغي أن يُقرأ كإهمال.
تتبع التبني مدى قديم الرأس، وليس مدى صعوبة تطبيقه
ترتيب معدلات الفشل قريب من العكس الزمني. HSTS، أقدم من الـ 6 وقابل للتبديل في كل لوحة تحكم CDN رئيسية، هو الأكثر تبنيًا. خيارات نوع المحتوى وخيارات الإطار، كلاهما تقاليد بائع طويلة الأمد قبل خلفائهما الرسميين، يقفان في الوسط. سياسة المراجع وسياسة الأذونات، أحدثهما، هما الأكثر نقصًا — وسياسة الأذونات، التي لا يضبطها أي مضيف شائع نيابةً عنك، تأتي في الأخير. لا أحد منهما أصعب من الآخر من حيث الهندسة. 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، ويحل ترتيب الإصلاح الخلاف لصالح الإرسال.
نشر 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 العائد يعني أن شريط الحضور قد تم مسحه والسؤال التالي — هل السياسات نفسها جيدة — يستحق السؤال. تقريرنا مجاني يقرأ نفسه على كل تدقيق ويقائمة كل رأس مفقود مع القيمة التي تحلّق به. رؤوس هذا المجموع البيانات غير مفقودة لأنها صعبة أو مثيرة للجدل. هي مفقودة لأن لا شيء في الحياة العادية لموقع ويب يظهر غيابها: لا خطأ، لا تغيير بصري، لا بناء فاشل. المواقع التي تمر هي تلك التي كان شخص ما، مرة واحدة، يبحث — وما زال ذلك النشر الوحيد متاحًا للأغلبية التي لم تكن.
انظر كيف يصنف موقعك
احصل على تقرير مجاني مدعوم بالذكاء الاصطناعي SEO مع نتائج قابلة للتنفيذ وإصلاحات أولوية لموقعك.
لا حاجة للتسجيل.