HSTS (HTTP Strict Transport Security)

Poczta i bezpieczeństwo
Nagłówek bezpieczeństwa wymuszający połączenia przeglądarki z witryną wyłącznie przez HTTPS i zapobiegający atakom downgrade.
← Wróć do słownika

Czym jest HSTS?

HSTS (HTTP Strict Transport Security) to mechanizm bezpieczeństwa internetowego, który informuje przeglądarki, aby łączyły się z witryną wyłącznie przez HTTPS, nigdy przez HTTP. Gdy przeglądarka zobaczy nagłówek HSTS, automatycznie zmieni wszystkie przyszłe żądania na HTTPS i odmówi połączenia przez zwykły HTTP, nawet jeśli użytkownik wpisze jawnie http://.

Dlaczego HSTS ma znaczenie

Luki w zabezpieczeniach mogą występować nawet przy ważnym certyfikacie SSL:

Atak SSL stripping

1. Użytkownik wpisuje „example.com” (bez https://)

2. Atakujący przechwytuje początkowe żądanie HTTP

3. Atakujący przekazuje żądanie do HTTPS, a użytkownikowi prezentuje HTTP

4. Użytkownik sądzi, że jest bezpieczny, lecz atakujący widzi wszystko

HSTS zapobiega temu, gwarantując, że przeglądarki nigdy nie wyślą tego początkowego żądania HTTP.

Korzyści z HSTS

Składnia nagłówka HSTS

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

Dyrektywy

DyrektywaOpis
max-ageLiczba sekund zapamiętywania HSTS (31536000 = 1 rok)
includeSubDomainsZastosowanie HSTS do wszystkich subdomen
preloadZgoda na umieszczenie na liście wstępnego ładowania przeglądarek

Wdrażanie HSTS

Nginx

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

Apache

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

Cloudflare

Włącz w SSL/TLS → Edge Certificates → HTTP Strict Transport Security

Express.js

const helmet = require('helmet');

app.use(helmet.hsts({

maxAge: 31536000,

includeSubDomains: true,

preload: true

}));

Lista preload HSTS

Lista preload HSTS to lista domen wpisanych na stałe do przeglądarek, do których należy łączyć się wyłącznie przez HTTPS. Eliminuje to nawet podatność związaną z pierwszym żądaniem HTTP.

Wymagania preload

1. Ważny certyfikat SSL

2. Przekierowanie całego HTTP do HTTPS

3. Nagłówek HSTS zawierający:

- max-age o wartości co najmniej 31536000 (1 rok)

- dyrektywę includeSubDomains

- dyrektywę preload

4. Wszystkie subdomeny muszą obsługiwać HTTPS

Zgłoszenie na listę preload

1. Sprawdź wymagania: użyj hstspreload.org

2. Zgłoś domenę: wpisz domenę na hstspreload.org

3. Poczekaj na uwzględnienie: aktualizacje przeglądarek mogą potrwać od kilku tygodni do kilku miesięcy

Ostrzeżenia dotyczące preload

Preload jest praktycznie trwały. Usunięcie domeny z listy trwa miesiącami i wymaga aktualizacji przeglądarek. Włączaj preload tylko wtedy, gdy masz pewność, że wszystkie subdomeny będą bezterminowo obsługiwać HTTPS.

Sprawdzanie HSTS

Narzędzia deweloperskie przeglądarki:

1. Otwórz narzędzia deweloperskie → kartę Network

2. Załaduj witrynę

3. Sprawdź nagłówki odpowiedzi pod kątem Strict-Transport-Security

Za pomocą curl:
curl -I https://example.com | grep -i strict
Za pomocą DomScan:
curl "https://domscan.net/v1/health?domain=example.com"

# Reports hasHSTS in security details

Stan preload:

Sprawdź hstspreload.org, aby dowiedzieć się, czy domena jest na liście preload.

Strategia wdrażania HSTS

Faza 1: Krótki max-age

Zacznij od krótkiego max-age, aby przeprowadzić test:

Strict-Transport-Security: max-age=300

Jeśli coś przestanie działać, użytkownicy będą mieli tę wartość zapisaną w pamięci podręcznej tylko przez 5 minut.

Faza 2: Wydłużenie czasu

Po potwierdzeniu, że HTTPS działa wszędzie:

Strict-Transport-Security: max-age=86400

Faza 3: Dodanie subdomen

Gdy wszystkie subdomeny obsługują HTTPS:

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

Faza 4: Pełne wdrożenie i preload

Po kilku miesiącach stabilnego działania:

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

Następnie zgłoś domenę na listę preload.

Typowe problemy z HSTS

Subdomena bez HTTPS: includeSubDomains przerwie działanie tej subdomeny Środowiska deweloperskie: HSTS zapisany z produkcji może zakłócić lokalne prace Nagłówki CDN/proxy: upewnij się, że pośrednicy nie usuwają nagłówka HSTS Mieszana zawartość: wszystkie zasoby muszą używać HTTPS; HSTS nie naprawia osadzonych zasobów HTTP

HSTS jest niezbędny dla każdej witryny obsługującej wrażliwe dane i zdecydowanie zalecany dla wszystkich witryn HTTPS.

Wykorzystaj tę wiedzę w praktyce

Użyj API DomScan, aby sprawdzić dostępność domen, ich kondycję i więcej.