Brak Strict-Transport-Security

Co to jest

Twoja strona nie wysyła nagłówka Strict-Transport-Security (HSTS). Ten nagłówek mówi przeglądarce „na tej witrynie nigdy więcej nie używaj HTTP, zawsze od razu HTTPS”.

Dlaczego to problem

Nawet jeśli masz działające HTTPS oraz przekierowanie z HTTP, pierwsza wizyta ma słaby punkt. Użytkownik wpisuje example.pl — przeglądarka zaczyna od próby HTTP. Jeśli w tym momencie między tobą a serwerem znajduje się atakujący (publiczne Wi-Fi, skompromitowany router), może on:

Z HSTS przeglądarka wie z góry, że na example.pl nie wolno wejść przez HTTP, i atak się nie udaje.

Jak to naprawić

Krok 1 — upewnij się, że HTTPS jest stabilne

HSTS przeglądarka „zapamiętuje” na dłuższy okres. Jeśli potem zepsujesz HTTPS (wygasły certyfikat, przypadkowo wyłączone SSL), twoja witryna będzie dla powracających odwiedzających niedostępna — przeglądarka odmówi nawet awaryjnego powrotu do HTTP.

Przed włączeniem HSTS sprawdź:

Krok 2 — ustaw krótką wartość do testu

Strict-Transport-Security: max-age=300

5 minut. Jeśli coś się zepsuje, w ciągu 5 minut wygaśnie. Monitoruj uptime i uruchom kilka testów.

Krok 3 — wdróż wartość produkcyjną

Strict-Transport-Security: max-age=15552000; includeSubDomains

Krok 4 (opcjonalny) — preload

Jeśli chcesz znaleźć się na wbudowanej liście przeglądarek (Chrome, Firefox, Safari) i mieć HSTS już przy pierwszej w ogóle wizycie z czystej przeglądarki:

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Następnie zarejestruj domenę na hstspreload.org.Ten krok jest trudny do cofnięcia — usunięcie z listy trwa tygodnie, a nawet miesiące.

Konkretne konfiguracje

nginx:

add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;

Apache:

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

Cloudflare: SSL/TLS → Edge Certificates → HTTP Strict Transport Security — checkbox w UI.

Źródła