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.
Przyczyny niepowodzenia audytu Lighthouse
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-agejest 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-ageokreś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
includeSubDomainswymusza nagłówek w przypadku wszystkich subdomen adresu URL strony, która początkowo wysyła nagłówek. Na przykład wysłanie przezgoogle.comnagłówka HSTS, który zawiera dyrektywęincludeSubDomains, spowoduje wymuszenie nagłówka HSTS namail.google.com. - Ustawienie dyrektywy
preloadi 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:
Zacznij od małej wartości
max-agei dodaj tylkoincludeSubDomains(bezpreload):max-age=3600; includeSubDomainsPo okresie oczekiwania (np. tygodniu), w trakcie którego nie zgłoszono żadnych problemów, zwiększ
max-age. Na przykład:max-age=604800; includeSubDomainsJeś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
preloadpowinna zostać dodana.max-age=63072000; includeSubDomains; preload