پروتکلهای متن ساده، مانند HTTP، میتوانند در برابر حملات استراق سمع آسیبپذیر باشند، که در آن یک مهاجم قادر به خواندن محتوای منتقل شده است. امنیت لایه انتقال (TLS) میتواند ترافیک را رمزگذاری کند و در صورت ضبط، استفاده از این دادهها را برای مهاجمان به طور قابل توجهی دشوارتر کند.
با این حال، مهاجمان میتوانند با مجبور کردن اتصالات رمزگذاری شده به استفاده از HTTP ساده، TLS را دور بزنند. برای رفع این مشکل، میتوانید از هدر پاسخ HTTP Strict Transport Security (HSTS) استفاده کنید. HSTS مرورگر کاربر را مجبور میکند تا از وبسایتی با استفاده از TLS بازدید کند و اجازه نمیدهد که برای مدت زمان مشخصی به HTTP ساده بازگردد.
چگونه حسابرسی لایتهاوس شکست میخورد؟

این ممیزی، مشکلات زیر را در هدر HSTS نشان میدهد:
- اگر اصلاً هیچ هدر HSTS پیدا نشد.
- اگر یکی از دستورالعملهای توصیهشده وجود ندارد (
max-age،includeSubDomains،preload) - اگر مدت زمان دستورالعمل
max-ageکمتر از یک سال (31536000 ثانیه) باشد. - اگر هنگام تجزیه هدر، خطای نحوی وجود داشته باشد، مانند یک دستورالعمل ناشناخته.
پیکربندی یک سیاست HSTS قوی
پیکربندی بهینه هدر HSTS به شرح زیر است:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
- دستورالعمل
max-ageمدت زمانی را که مرورگر کاربر مجبور است فقط با استفاده از TLS از یک وبسایت بازدید کند (بر حسب ثانیه) مشخص میکند. پس از گذشت زمان، اگر هیچ هدر HSTS توسط وبسایت ارائه نشده باشد (یا ریدایرکتهای موقت از HTTP به HTTPS)، کاربران میتوانند دوباره با HTTP ساده به سایت دسترسی پیدا کنند. - تنظیم دستورالعمل
includeSubDomainsهدر را روی هر زیردامنه از URL صفحه که هدر را در ابتدا ارسال میکند، اعمال میکند. برای مثال، داشتن یک هدر HSTS ارسال شده توسطgoogle.comکه شامل دستورالعملincludeSubDomainsاست، هدر HSTS را رویmail.google.comاعمال میکند. - تنظیم دستورالعمل
preloadو ارسال دامنه به سرویس preload HSTS، دامنه را در فایلهای باینری مرورگری که از لیست HSTS از پیش بارگذاری شده استفاده میکنند، کامپایل میکند. این موضوع علاوه بر گوگل کروم، در مورد موارد دیگری نیز صادق است.
هنگام راهاندازی هدر HSTS خطراتی وجود دارد. هر ویژگی که به اتصال HTTP رمزگذاری نشده نیاز داشته باشد، عملاً برای مدت زمان تعیین شده در دستورالعمل max-age از کار میافتد. در صورت اعمال دستورالعمل preload ، این زمان میتواند حتی بیشتر هم باشد.
برای کاهش خطرات مرتبط با راهاندازی، یک رویکرد مرحلهای توصیه میشود:
با یک
max-ageکوچک شروع کنید و فقطincludeSubDomainsاضافه کنید (بدونpreload):max-age=3600; includeSubDomainsپس از یک دوره استراحت (مثلاً یک هفته) بدون گزارش مشکل،
max-ageرا افزایش دهید. برای مثال:max-age=604800; includeSubDomainsاگر این مرحله اولیه برای مدت زمان طولانی (مانند سه ماه) موفقیتآمیز باشد، وبسایت و زیردامنههای آن باید به لیست پیشبارگذاری HSTS اضافه شوند و دستورالعمل
preloadنیز باید اضافه شود.max-age=63072000; includeSubDomains; preload