موقعك على HTTPS، فليش أول طلب لسا مكشوف؟ فعّل HSTS صح
الـ HSTS هيدر بيقول للمتصفح يفتح موقعك بـ HTTPS بس، حتى لو حدا كتب http. بلّش بمدة يوم، وتأكد من كل النطاقات الفرعية، وبعدين طوّلها لسنتين.

بتكتب example.com بالمتصفح بلا https://، وموقعك عنده شهادة سليمة وتحويل لـ HTTPS. مع هيك، الطلب الأول بيطلع على http مكشوف، والتحويل بيجي بعده. بآخر هالمقال رح تعرف تسكّر هالطلب بهيدر واحد، وبأي ترتيب تفعّله لحتى ما تقفل نطاق فرعي لسا شغّال على http.
شو هو HSTS؟
الـ HSTS هيدر بيبعته موقعك على HTTPS، وبيقول للمتصفح إنو هالموقع بينفتح بـ HTTPS بس، لمدة محددة بالثواني.
اسمه الكامل HTTP Strict Transport Security، وبيوصل بسطر واحد بالرد:
Strict-Transport-Security: max-age=86400; includeSubDomainsحسب صفحة الهيدر على MDN، max-age هو عدد الثواني يلي المتصفح بيتذكّر فيها إنو الموقع بينفتح بـ HTTPS بس، وincludeSubDomains بيمدّ نفس القاعدة لكل النطاقات الفرعية. والمتصفح بيتجاهل الهيدر إذا وصله على http، لحتى ما يقدر حدا قاعد بالنص يزرعه لموقع ما عنده HTTPS، أو يقصّر مدته.
من شو بيحميك HSTS؟
الـ HSTS بيحمي الزائر من مهاجم قاعد بالنص على الشبكة، بالطلبات يلي كانت رح تطلع على http.
دليل OWASP عن HSTS بيسمّي تلات حالات:
الزائر بيكتب العنوان بـ
http://أو بيفتح علامة محفوظة فيها http، وفي مهاجم بالنص (man-in-the-middle).موقعك مفروض يكون HTTPS بس، وفيه بالغلط روابط http: المتصفح بيرقّيها لـ HTTPS لحاله.
الشهادة غلط: الـ HSTS ما بيخلّي الزائر يتجاوز رسالة الشهادة ويكمّل.
الحالة التالتة بتفرق كتير بشبكة مقهى أو مطار. إذا حدا عرض شهادة مزوّرة لموقعك، الزائر ما بيلاقي زر بيكمّل فيه، فالصفحة المزوّرة ما بتفتح عنده.
ليش التحويل بالسيرفر ما بيكفي؟
التحويل من http لـ HTTPS بالسيرفر بيشتغل بعد ما الطلب المكشوف وصل، والـ HSTS بيخلّي المتصفح ما يبعت هالطلب من أساسه.
لما المتصفح بيشوف الهيدر مرة، بيحفظ السياسة عنده للمدة يلي بـ max-age. بالزيارة الجاية، إذا كتبت http://، المتصفح بيبدّله لـ https:// قبل ما يطلع الطلب من جهازك، فما في شي على الشبكة لحدا يرد عليه.
ضل باب واحد مفتوح: الزيارة الأولى. صفحة MDN نفسها بتقول إنو نقطة ضعف HSTS إنو ما بيشتغل قبل أول اتصال آمن بالموقع، وإنو الـ preload بيخفف هالمشكلة. الـ preload قائمة نطاقات بتحفظها المتصفحات الكبيرة (متل Chromium وEdge وFirefox)، فالمتصفح بيعرف إنو موقعك HTTPS بس من قبل ما يزوره. وهالقائمة مش جزء من مواصفة HSTS نفسها.
بأي ترتيب تفعّل HSTS بلا ما تقفل نطاق فرعي؟
بتفعّل الـ HSTS بأمان لما تبلّش بمدة قصيرة، وتطوّلها بس بعد ما تتأكد إنو كل نطاق فرعي شغّال على HTTPS.
الخطر هون من عندك مش من المهاجم: مع includeSubDomains، أي نطاق فرعي بينخدم على http بس بيوقف عند الزوار طول المدة يلي حطيتها. هيك بتمشي:
اكتب لستة بكل نطاقاتك الفرعية: الموقع، والـ API، ولوحة الإدارة، والإيميل، وأي نطاق قديم نسيته. افتح كل واحد بـ
https://، ولازم ينفتح بشهادة سليمة.ابعت الهيدر بمدة يوم، متل مثال البداية بدليل OWASP:
max-age=86400; includeSubDomains. إذا طلع نطاق فرعي نسيته، بيوقف يوم بس.بعد ما تمرق فترة بلا شكاوي، طوّل المدة لسنتين:
max-age=63072000; includeSubDomains. الـ 63072000 ثانية هي سنتين، وهي القيمة يلي بأمثلة OWASP.خلّي الـ preload لآخر شي. مع
preload، صفحة MDN بتطلبmax-ageلا تقل عن 31536000 (سنة) ومعهاincludeSubDomains، وOWASP بتحذّر إنو إرسالpreloadممكن تكون نتيجته دايمة.
وإذا لزمك ترجع عنه: ابعت max-age=0 على HTTPS. المتصفح بيوقف السياسة بس لما يوصله هالرد على اتصال آمن، وما في طريقة توقفها من http.
كيف تتأكد إنو الهيدر واصل؟
بتتأكد إنو هيدر HSTS واصل لما تطلب الصفحة بـ HTTPS وتدوّر عليه بالرد.
curl -sI https://example.com | grep -i strict-transport-securityبدّل example.com بنطاقك، وجرّب كمان صفحة داخلية ونطاق فرعي، مش بس الصفحة الرئيسية. إذا ما طلع ولا سطر، الهيدر مش واصل لهالعنوان. وما تقيس على http://: المتصفح بيتجاهل الهيدر هونيك، فوجوده على http ما بيحمي حدا.
وإذا عم تراجع أمان الهيدرز بموقعك، كمّل بـ فحص كوكي الجلسة. OWASP بتقول إنو ترك includeSubDomains بيسمح بهجمات على الكوكي من النطاقات الفرعية، وإنو علامة secure على كل الكوكي بتمنع بعضها مش كلها، فالاتنين بيكمّلوا بعض.
من وين تبلّش هلق؟
بلّش من لستة النطاقات الفرعية: هي يلي بتقرّر إذا includeSubDomains رح يحمي موقعك أو يقفل جزء منه. بعدها ابعت الهيدر بمدة يوم، وافحصه بـ curl، وطوّل المدة لما تتأكد.
وإذا موقعك بيحمّل سكربتات من CDN، الـ HSTS بيحمي الاتصال بس، مش محتوى الملف: هونيك بيلزمك قفل السكربتات بـ Subresource Integrity. وإذا بدك حدا يمرق على إعدادات موقعك كلها قبل ما يلاقيها غيرك، هاد شغل مُحَصَّن.
شو آخر نطاق فرعي فتحته عندك، وهل لسا بيفتح على HTTPS؟
أسئلة شائعة
هل HSTS بيغني عن تحويل http لـ https بالسيرفر؟
لأ. المتصفح ما بيعرف السياسة قبل ما يوصله الهيدر على اتصال آمن، فأول طلب لسا بيمرق على http. التحويل بيوصّل الزائر لـ HTTPS بهالمرة، وبعدها HSTS بيخلّي المتصفح يروح على HTTPS لحاله.
شو بعمل إذا بدي أوقف HSTS بعد ما فعّلته؟
ابعت الهيدر بـ max-age=0 على HTTPS. المتصفح بيوقف السياسة بس لما يطلب الموقع بـ HTTPS ويوصله هالرد، وما في طريقة توقفها من http.
هل لازم أدخل موقعي على قائمة preload؟
مش لازم. القائمة بتسكّر خطر أول زيارة، بس OWASP بتحذّر إنو إرسال preload ممكن تكون نتيجته دايمة، فادخلها بس لما يكون كل نطاق فرعي عندك على HTTPS.
هل HSTS بيحمي كوكي الجلسة؟
بيساعد، بس مش لحاله. OWASP بتقول إنو ترك includeSubDomains بيفتح باب لهجمات على الكوكي من النطاقات الفرعية، وإنو علامة secure على كل الكوكي بتمنع بعضها مش كلها.


