پروتکلهای متن ساده مانند HTTP میتوانند در برابر حملات شنود آسیبپذیر باشند، جایی که مهاجم قادر به خواندن محتوای ارسال شده است. خوشبختانه، امنیت لایه حمل و نقل (TLS) می تواند ترافیک را رمزگذاری کند و در صورت ضبط، استفاده از این داده ها را برای مهاجمان به طور قابل توجهی دشوارتر کند.
با این حال، این امکان برای مهاجمان وجود دارد که TLS را با وادار کردن اتصالات رمزگذاری شده به استفاده از HTTP متن ساده دور بزنند. برای رفع این مشکل، هدر پاسخ HTTP Strict Transport Security (HSTS) معرفی شد که مرورگر کاربر را مجبور میکند تا از یک وبسایت فقط با استفاده از TLS بازدید کند و به HTTP متن ساده (برای مدت زمان معین) برنگردد.
چگونه ممیزی فانوس دریایی شکست می خورد
ممیزی مسائل زیر را با هدر HSTS علامت گذاری می کند:
- اگر سرآیند HSTS اصلا پیدا نشد.
- اگر یکی از دستورالعمل های توصیه شده وجود نداشته باشد (
max-age
،includedSubDomains
،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
و ارسال دامنه به سرویس پیشبارگذاری HSTS، دامنه را در باینریهای مرورگر که از فهرست HSTS از پیش بارگذاریشده (نه فقط Google Chrome) استفاده میکنند، کامپایل میکند.
هنگام باز کردن هدر 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