Chybí Strict-Transport-Security

Co to je

Vaše stránky neposílají hlavičku Strict-Transport-Security (HSTS). Tahle hlavička řekne prohlížeči „na tenhle web už nikdy neviz HTTP, vždycky rovnou HTTPS“.

Proč je to problém

I když máte funkční HTTPS i HTTP redirect, první návštěva má slabé místo. Uživatel napíše example.cz — prohlížeč začne pokusem o HTTP. Pokud je v té chvíli mezi vámi a serverem útočník (veřejná Wi-Fi, kompromitovaný router), může:

S HSTS prohlížeč ví předem, že se na example.cz nesmí jít přes HTTP, a útok se nedaří.

Jak to opravit

Krok 1 — ujistěte se, že HTTPS je stabilní

HSTS prohlížeč „naučí“ na delší období. Když pak HTTPS rozbijete (expirovaný cert, omylem vypnuté SSL), váš web bude pro vracející návštěvníky nedostupný — prohlížeč odmítne i fallback na HTTP.

Před zapnutím HSTS si ověřte:

Krok 2 — nastavit krátkou hodnotu pro test

Strict-Transport-Security: max-age=300

5 minut. Když se něco rozbije, do 5 minut to odezní. Sledujte uptime a spustěte několik testů.

Krok 3 — nasadit produkční hodnotu

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

Krok 4 (volitelný) — preload

Pokud chcete být ve vestavěném seznamu prohlížečů (Chrome, Firefox, Safari) a mít HSTS i pro úplně první návštěvu z čistého prohlížeče:

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

Pak doménu zaregistrujte na hstspreload.org.Tento krok je obtížně reverzovatelný — vyřazení ze seznamu trvá týdny až měsíce.

Konkrétní konfigurace

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 — UI checkbox.

Reference