از یک سیاست HSTS قوی استفاده کنید

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

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

چگونه ممیزی فانوس دریایی شکست می خورد

هشدار ممیزی فانوس دریایی مبنی بر اینکه سرفصل پاسخ HSTS پیدا نشد.
گزارش Lighthouse هشدار می دهد که هیچ سرفصل پاسخ HSTS پیدا نشد.

ممیزی مسائل زیر را با هدر 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 اعمال شود، حتی طولانی تر خواهد شد.

برای کاهش خطرات مرتبط با عرضه، یک رویکرد مرحله‌ای توصیه می‌شود:

  1. با max-age کوچک شروع کنید و فقط includeSubDomains اضافه کنید (بدون preload ):

    max-age=3600; includeSubDomains
    
  2. پس از مدتی استراحت (به عنوان مثال، یک هفته) بدون هیچ مشکلی گزارش شده، max-age را افزایش دهید، برای مثال:

    max-age=604800; includeSubDomains
    
  3. اگر این مرحله اولیه برای مدت طولانی (مثلاً سه ماه) موفقیت آمیز باشد، وب سایت و زیر دامنه های آن باید به لیست پیش بارگذاری HSTS اضافه شود و دستورالعمل preload باید اضافه شود.

    max-age=63072000; includeSubDomains; preload