Stosowanie silnej zasady HSTS

Protokoły w formie zwykłego tekstu, takie jak HTTP, mogą być podatne na ataki polegające na podsłuchiwaniu, w których osoba przeprowadzająca atak może odczytać przesyłane treści. Transport Layer Security (TLS) może szyfrować ruch i znacznie utrudniać atakującym wykorzystanie przechwyconych danych.

Hakerzy mogą jednak obejść TLS, wymuszając używanie zwykłego protokołu HTTP w zaszyfrowanych połączeniach. Aby rozwiązać ten problem, możesz użyć nagłówka odpowiedzi HTTP Strict Transport Security (HSTS). HSTS wymusza na przeglądarce użytkownika odwiedzanie witryny przy użyciu protokołu TLS i przez określony czas nie pozwala na powrót do zwykłego protokołu HTTP.

Browser Support

  • Chrome: 4.
  • Edge: 12.
  • Firefox: 4.
  • Safari: 7.

Source

Przyczyny niepowodzenia audytu Lighthouse

Ostrzeżenie w raporcie Lighthouse o braku nagłówka odpowiedzi HSTS.

Kontrola zgłasza te problemy z nagłówkiem HSTS:

  • Jeśli nie znaleziono nagłówka HSTS.
  • Jeśli brakuje jednej z zalecanych dyrektyw (max-age,includeSubDomains, preload)
  • Jeśli czas trwania dyrektywy max-age jest krótszy niż rok (31536000 sekund).
  • Jeśli podczas analizowania nagłówka wystąpi błąd składni, np. nieznana dyrektywa.

Konfigurowanie silnej zasady HSTS

Optymalna konfiguracja nagłówka HSTS wygląda tak:

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  • Dyrektywa max-age określa czas (w sekundach), przez jaki przeglądarka użytkownika jest zmuszona do odwiedzania witryny tylko przy użyciu protokołu TLS. Po upływie tego czasu użytkownicy mogą ponownie uzyskać dostęp do witryny za pomocą zwykłego protokołu HTTP, jeśli witryna nie udostępnia nagłówka HSTS (lub tymczasowych przekierowań z HTTP na HTTPS).
  • Ustawienie dyrektywy includeSubDomains wymusza nagłówek w przypadku wszystkich subdomen adresu URL strony, która początkowo wysyła nagłówek. Na przykład wysłanie przez google.com nagłówka HSTS, który zawiera dyrektywę includeSubDomains, spowoduje wymuszenie nagłówka HSTS na mail.google.com.
  • Ustawienie dyrektywy preload i przesłanie domeny do usługi wstępnego ładowania HSTS spowoduje skompilowanie domeny do plików binarnych przeglądarki, które korzystają z wstępnie wczytanej listy HSTS. Dotyczy to nie tylko Google Chrome.

Wdrażanie nagłówka HSTS wiąże się z pewnym ryzykiem. Wszystkie funkcje, które wymagają niezaszyfrowanego połączenia HTTP, będą w tym czasie niedostępne.max-age Może to potrwać nawet dłużej, jeśli zastosowana zostanie dyrektywa preload.

Aby zmniejszyć ryzyko związane z wdrażaniem, zalecamy podejście etapowe:

  1. Zacznij od małej wartości max-age i dodaj tylko includeSubDomains (bez preload):

    max-age=3600; includeSubDomains
    
  2. Po okresie oczekiwania (np. tygodniu), w trakcie którego nie zgłoszono żadnych problemów, zwiększ max-age. Na przykład:

    max-age=604800; includeSubDomains
    
  3. Jeśli ten początkowy etap będzie trwał przez dłuższy czas (np. 3 miesiące), witryna i jej subdomeny powinny zostać dodane do listy wstępnego wczytywania HSTS, a dyrektywa preload powinna zostać dodana.

    max-age=63072000; includeSubDomains; preload