Defaults.Exposed › الإصلاحات › HSTS (الأمن الصارم لنقل البيانات)
كيف تُصلح HSTS (الأمن الصارم لنقل البيانات)
HSTS تعليمة من سطر واحد يمنحها موقعك لكل متصفح: 'عُد إليّ دائماً عبر الاتصال الآمن المشفّر — لا غير الآمن أبداً.' بدونها، يمكن تجريد قفلك بهدوء على شبكة Wi-Fi مشتركة، وتكون الزيارة الأولى لموقعك معرّضة.
الخلاصة لعملك: امتلاك HTTPS (القفل) ليس مثل فرضه. بدون HSTS، يستطيع مهاجم على شبكة Wi-Fi نفسها التي عليها عميلك أن يُنزِل بصمت الاتصال إلى HTTP عادي غير مشفّر — ملتقطاً عمليات تسجيل الدخول وتفاصيل البطاقات وبيانات النماذج بينما لا يرى العميل أي خطأ. ويُتجاوَز شهادة SSL الخاصة بك، التي قد تدفع ثمنها. الإصلاح مجاني ويستغرق نحو 15 دقيقة لمن يدير موقعك.
ماذا قد يكلّفك هذا
- العملاء على شبكة Wi-Fi مقهى أو فندق أو مطار أو مؤتمر يمكن أن يُنزَّل اتصالهم بموقعك بصمت وتُقرأ بياناتهم — دون أي تحذير على شاشتهم.
- دفعت ثمن HTTPS ولديك القفل، لكن بدون HSTS يستطيع المهاجمون ببساطة الالتفاف حوله؛ فتمنح الشهادة شعوراً زائفاً بالأمان.
- الزيارة الأولى لموقعك (قبل أي إعادة توجيه إلى HTTPS) هي نقطة الضعف التي يستهدفها المهاجمون — وHSTS هو ما يغلقها لكل زيارة لاحقة.
- يُعلِّم استبيان أمني، أو نموذج تأمين سيبراني، أو قائمة تحقق لمشترٍ مؤسسي 'لا HSTS' فيُعطّل الصفقة حتى يُصلَح.
- اضبط القيمة خطأً (قصيرة جداً) فتحصل على أسوأ العالمين: تبدو مُعدّة لكنها توفّر حماية حقيقية شبه معدومة.
لماذا يهمّ. يحمي HTTPS اتصالاً بمجرد تشفيره — لكنه لا يُجبِر المتصفحات على استخدامه. يستغلّ المهاجمون تلك الثغرة بـ 'تجريد SSL': فعلى أي شبكة مشتركة يُبقون الزائر بهدوء على HTTP غير الآمن، قارئين كل شيء. وHSTS يُخبر المتصفح برفض HTTP العادي لنطاقك كلياً، لمدة طويلة، فتُغلَق الثغرة بعد الزيارة الأولى. إنه ترويسة استجابة واحدة، مجانية الإضافة، وفي تقييمنا يستحق نقاطاً حقيقية لأن قيمة مفقودة أو قصيرة جداً تترك كل زائر على شبكة Wi-Fi عامة معرّضاً.
ما هذا، بكلمات بسيطة
لديك على الأرجح HTTPS — القفل الصغير في شريط المتصفح. جيد. لكن إليك الجزء الذي لا يُخبَر به أحد تقريباً: امتلاك HTTPS ليس مثل فرضه.
HTTPS يجعل اتصالاً مشفّراً بمجرد أن يقرّر المتصفح استخدامه. وHSTS — اختصار لـ HTTP Strict Transport Security — هو التعليمة التي تجعل المتصفح يستخدمه دائماً. إنه سطر واحد غير مرئي يرسله موقعك لكل زائر يقول، في جوهره:
“من الآن فصاعداً، لنطاقي، تحدّث إليّ فقط عبر الاتصال الآمن. لا غير الآمن أبداً. ولا تحاول حتى.”
يتذكّر المتصفح ذلك ويطيعه للمدة التي تخبره بها — نموذجياً سنة. وبعد الزيارة الآمنة الأولى لزائر، سيرفض متصفحه ببساطة تحميل موقعك عبر HTTP العادي غير المشفّر، حتى لو حاول شيء ما إجباره.
بدون HSTS، لا توجد قاعدة “استخدم النسخة الآمنة دائماً” تلك — ويعرف المهاجمون بالضبط كيف يستغلّون الثغرة.
ما قد يكلّفك هذا
هذه سيناريوهات واقعية يومية. نحن لا نذكر أبداً نشاطاً تجارياً حقيقياً؛ هذه أمثلة على كيفية استغلال الثغرة.
-
صفحة الدفع في المقهى. يفتح عميل متجرك على شبكة Wi-Fi مقهى ويتوجّه لإتمام الشراء. يشغّل مهاجم على الشبكة نفسها أداة مجانية معروفة تُبقي العميل على HTTP عادي بدلاً من HTTPS. يرى العميل ما يبدو كموقعك الطبيعي — لا تحذير، لا قفل مكسور في الموضع الذي قد ينظر إليه — ويكتب تفاصيل بطاقته. يقرأ المهاجم كل ضغطة مفتاح. لم تفعل شهادة SSL الخاصة بك شيئاً، لأن الاتصال لم يُسمَح له بأن يصبح آمناً ابتداءً.
-
الموظف المسافر. يسجّل أحد الموظفين الدخول إلى لوحة الإدارة أو بريد الويب لديك من فندق أو مطار. تلتقط خدعة النزول نفسها اسم المستخدم وكلمة المرور. والآن لدى المهاجم طريق إلى نشاطك التجاري — لا لأن سياسة كلمات مرورك كانت ضعيفة، بل لأن صفحة تسجيل الدخول كانت قابلة للوصول عبر HTTP غير الآمن.
-
الصفقة التي تتعثّر. يرسل لك عميل أكبر استبيانه الأمني المعتاد قبل التوقيع. يسأل سطر واحد: “هل يفرض موقعك HTTPS عبر HSTS؟” يضطر اتصالك التقني للإجابة بـ “لا”، وتتوقف عملية المشتريات بينما تهرع لإصلاح إعداد مجاني من 15 دقيقة يبدو الآن كعلامة خطر أمام مشترٍ.
-
فحص التأمين السيبراني أو الامتثال. يُعلِّم مسح شركة تأمين، أو مدقّق يراجع وضع حماية بياناتك، الترويسة المفقودة. تشفير البيانات الشخصية توقّع صريح بموجب قواعد حماية البيانات (المادة 32 من GDPR)، و”لدينا شهادة لكننا لا نفرضها” موقف ضعيف للوقوف عليه.
-
الشعور الزائف بالأمان. تدفع ثمن SSL، والقفل يظهر، ويفترض الجميع أن الموقع آمن. وهو كذلك في معظمه — حتى يكون العميل على شبكة مشتركة، وهو بالضبط حين يكون الأكثر عرضة والأقل احتمالاً لملاحظة أي خطأ.
الخيط الجامع: التكلفة ليست مجرّدة. إنها بطاقة عميل حقيقي أو تسجيل دخوله، تُلتقَط في أسوأ لحظة ممكنة، دون انطلاق أي إنذار.
ما هو فعلاً
حين يطلب متصفح من موقعك صفحة، يرسل خادمك الصفحة بالإضافة إلى بعض “الترويسات” غير المرئية — تعليمات إضافية يقرؤها المتصفح لكن الزائر لا يراها أبداً. وHSTS واحدة من تلك الترويسات:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
ثلاثة أجزاء تهمّ:
max-age— كم مدة (بالثواني) ينبغي للمتصفح تذكّر فرض HTTPS.31536000سنة واحدة. هذا هو جوهره: قصير جداً فبالكاد يساعد.includeSubDomains— يمدّد القاعدة إلى كل نطاق فرعي (shop.،app.،mail.وما إلى ذلك)، لا عنوانك الرئيسي فقط.preload— يُدرِج نطاقك في قائمة رئيسية مدمجة في المتصفحات، فتُطبَّق الحماية حتى على الطلب الأول لزائر، قبل أن يرى موقعك أبداً.
لماذا تهمّ “الزيارة الأولى”
لـ HSTS قيد متأصّل واحد: يطيع المتصفح القاعدة فقط بعد أن يرى الترويسة مرة واحدة على الأقل. فالاتصال الأول لزائر جديد تماماً لا يزال نافذة تعرّض ضئيلة. أمران يضيّقانها: إعادة توجيه من HTTP إلى HTTPS (تُوصِله إلى النسخة الآمنة بسرعة) وpreload (يزيل النافذة كلياً). ولهذا يقرن الإعداد الكامل HSTS بإعادة توجيه سليمة.
كيف يبدو “الجيد” — وكيف يُقيَّم
يقرأ فحصنا ترويستك الحيّة ويقيّم max-age:
| قيمة max-age | ما تعنيه | النتيجة |
|---|---|---|
| سنة أو أكثر (≥ 31536000) | ممتاز — الإعداد الموصى به | الدرجة الكاملة |
| ستة أشهر أو أكثر (≥ 15768000) | جيد، لكن ليس السنة الكاملة | جزئية |
| يوم أو أكثر (≥ 86400) | ضعيف — قصير جداً ليكون موثوقاً | منخفضة / جزئية |
| أقل من يوم، أو لا ترويسة أصلاً | لا حماية عملياً | فشل (عالي الخطورة) |
فالترويسة التي توجد لكنها مضبوطة على بضع دقائق تُعامَل كفشل — تبدو مُعدّة لكنها لا تؤدي المهمة. اهدف إلى سنة. ويلاحظ الفحص أيضاً ما إذا كان includeSubDomains وpreload موجودين.
كيفية الإصلاح (مجاناً، ~15 دقيقة)
سلّم هذا القسم لمن يدير موقعك — الشخص التقني لديك، أو مطوّر الويب، أو دعم الاستضافة. الإصلاح مجاني. إنه ترويسة واحدة، أو مفتاح في منصة استضافتك. لا شيء لشرائه.
قاعدة ترتيب مهمة أولاً: HSTS لزِج — فبمجرد تفعيله، سترفض المتصفحات HTTP العادي لنطاقك طوال max-age كاملةً. لذا تأكد من أن HTTPS يعمل بشكل صحيح على موقعك الرئيسي وكل نطاق فرعي قبل تفعيله على نطاق واسع. والمسار الآمن هو: اختبر بقيمة قصيرة ← تأكد من عدم تعطّل شيء ← ارفع إلى سنة.
الخطوة 1 — تأكد من أن HTTPS يعمل أصلاً في كل مكان
زُر موقعك ونطاقاتك الفرعية الرئيسية عبر https:// وتأكد من تحميلها بنظافة بشهادة صالحة. وتأكد أيضاً من أن طلبات http:// العادية تُعاد توجيهها إلى https://. (إن لم تفعل، فأصلِح إعادة التوجيه من HTTP إلى HTTPS أولاً — فـ HSTS يفترض وجودها.)
الخطوة 2 — أضِف الترويسة (اختر منصتك)
Cloudflare (أو CDN مشابه): هذا الأسهل. اذهب إلى SSL/TLS ← Edge Certificates ← HTTP Strict Transport Security (HSTS) وفعّله. اضبط Max-Age على 6 أشهر أو 12 شهراً، وفعّل “Apply HSTS policy to subdomains” بمجرد تأكدك من أن كل النطاقات الفرعية على HTTPS.
Nginx: أضِف داخل كتلة server الخاصة بـ HTTPS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Apache: تأكد من تفعيل mod_headers، ثم أضِف إلى مضيفك الافتراضي لـ HTTPS:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Microsoft IIS: أضِف إلى web.config داخل <customHeaders>:
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
ملاحظة Google Workspace / Microsoft 365: هذان يشغّلان بريدك، لا استضافة موقعك — فـ HSTS يُضبَط حيثما يعيش موقعك العام فعلاً (CDN لديك، أو خادم الويب، أو منشئ المواقع)، لا في لوحة إدارة Workspace/365. وإذا كان موقعك على منشئ مثل Squarespace أو Wix أو Shopify، فإن HSTS يُتولّى عادة لك؛ تحقّق من إعدادات SSL/الأمن لديهم إن عُلِّم فحصنا.
الخطوة 3 — اختبر بصغير، ثم التزِم
ابدأ بـ max-age=300 (5 دقائق). تأكد من تحميل الموقع بشكل مثالي في كل مكان. ثم ارفعها إلى max-age=31536000 (سنة واحدة). تلك هي قيمة الدرجة الكاملة.
الخطوة 4 (اختياري، المعيار الذهبي) — preload
بمجرد ثقتك وتشغيلك ترويسة سنة مع includeSubDomains لفترة، يمكنك تقديم نطاقك على hstspreload.org ليُدمَج في المتصفحات. هذا يغلق نافذة الزيارة الأولى كلياً. عامِله كالتزام متعمّد — فإزالة نطاق من القائمة بطيئة.
الأخطاء الشائعة
- ضبط
max-ageقصيراً جداً. قيمة بضع دقائق أو ساعات تبدو مُعدّة لكنها توفّر حماية شبه معدومة — ويعامل فحصنا أي شيء أقل من يوم كفشل. استخدم سنة. - تفعيل
includeSubDomainsقبل جاهزية النطاقات الفرعية لـ HTTPS. إذا لم يكن نطاق فرعي على HTTPS بالكامل، فقد تجعله القاعدة اللزِجة غير قابل للوصول للزوّار. أوصِل كل نطاق فرعي إلى HTTPS أولاً. - إضافة HSTS دون وجود إعادة توجيه من HTTP إلى HTTPS. يفترض HSTS أن الزوّار يصلون إلى النسخة الآمنة؛ وبدون إعادة التوجيه، تكون الزيارة الأولى معرّضة دون داعٍ. أصلِح كليهما معاً.
- القفز مباشرة إلى
preloadلـ “الدقّة”. preload صعب التراجع. استحقّه تدريجياً بعد ترويسة سنة مستقرة — لا تتعجّله. - افتراض أن القفل يعني أنك مغطّى. القفل وHSTS أمران مختلفان. يمكن أن تكون لديك شهادة مثالية وتظلّ تفشل في هذا الفحص.
الأسئلة الشائعة
لدينا بالفعل HTTPS والقفل يظهر. أليس ذلك كافياً؟
لا — وهذا أكثر سوء فهم شيوعاً. القفل يعني أن اتصالاً يمكن أن يُشفَّر؛ ولا يُجبِر المتصفحات على استخدام النسخة المشفّرة. بدون HSTS، يستطيع مهاجم على الشبكة نفسها إبقاء زائر على HTTP عادي (يُسمّى تجريد SSL) وقراءة كل ما يكتبه، بينما يرى العميل موقعاً يبدو طبيعياً. وHSTS هو التعليمة التي تجعل 'المشفّر فقط' إلزامياً. HTTPS بلا HSTS باب مقفل لكنه غير مُزلَج فعلاً.
هل تفعيل هذا باهظ أو محفوف بالمخاطر؟
الإصلاح نفسه مجاني — إنه سطر واحد في خادم الويب الخاص بك أو مفتاح في شبكة CDN لديك — ويستغرق نحو 15 دقيقة. التحذير الحقيقي الوحيد: HSTS لزِج. فبمجرد رؤية متصفح له، سيرفض HTTP العادي لنطاقك للمدة التي حدّدتها. لذا يجب أن تكون واثقاً من أن HTTPS يعمل على موقعك الرئيسي وكل نطاق فرعي قبل تفعيله على نطاق واسع. ابدأ بقيمة اختبار قصيرة، وتأكد من عدم تعطّل شيء، ثم ارفعها إلى سنة. بهذا الترتيب، تكون المخاطرة ضئيلة.
كيف يبدو 'الجيد' فعلاً؟
قيمة max-age لا تقلّ عن سنة (31536000 ثانية). يمنح فحصنا الدرجة الكاملة عند سنة أو أكثر، ودرجة جزئية عند ستة أشهر، وضعيفة/جزئية عند يوم، ويعامل أي شيء أقل من يوم كأنه غائب عملياً. والإعداد الأقوى يضيف أيضاً includeSubDomains (يغطّي shop.yoursite.com وapp.yoursite.com وإلخ) وpreload (يدمج الحماية في المتصفحات بحيث تكون حتى الزيارة الأولى آمنة).
ما هو 'preload' وهل نحتاجه؟
يحمي HSTS الزائر فقط بعد أن يرى متصفحه الترويسة مرة واحدة على الأقل — فالطلب الأول لزائر جديد تماماً لا يزال نافذة صغيرة. وقائمة HSTS preload، المدمجة في Chrome وFirefox وSafari وEdge، تغلق تلك النافذة بشحن نطاقك إلى المتصفحات مسبقاً. إنه اختياري والتزام أكبر قليلاً (الإزالة بطيئة)، لكنه المعيار الذهبي. وبالنسبة لمعظم الأنشطة الصغيرة، قيمة max-age لسنة مع includeSubDomains نتيجة قوية وآمنة أصلاً؛ وpreload هو الخطوة الإضافية بمجرد استقرارك.
نحن على Squarespace / Wix / Shopify — هل علينا فعل أي شيء أصلاً؟
معظم منشئي المواقع المُستضافين بالكامل (Squarespace، Wix، Shopify وما شابه) يفرضون HTTPS وغالباً يضبطون HSTS لك تلقائياً — فقد تجتاز أصلاً دون فعل شيء. والاستثناء حين تستخدم نطاقاً مخصّصاً أو CDN أمام موقعك؛ فعندها قد يسقط الإعداد في الثغرات. أجرِ الفحص: إن اجتاز، فقد انتهيت. وإن عُلِّم، فالإصلاح هو المفتاح في إعدادات SSL/الأمن لمنصتك، أو سطر واحد لدى CDN لديك.
إن لم نُصلِحه، هل يخفض درجتنا؟
نعم. HSTS فحص أمن ويب مُقيَّم، لا للعلم — فترويسة مفقودة أو قصيرة جداً تكلّف نقاطاً وتُصنَّف عالية الخطورة، لأنها تُعرّض مباشرة بيانات زوّارك على الشبكات المشتركة. وهو أيضاً من أرخص النقاط استرداداً: ترويسة مجانية واحدة، نحو 15 دقيقة من العمل.