Kontrola bezpečnostných hlavičiek

Vloží sa hlavičky odpovede stránky —curl -sI https://your-site.example/v termináli alebo blok z panela Sieť v prehliadači — a získaťHodnotenie od A+ po Fv zozname OWASP Secure Headers:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, ochrana pred rámovaním,Referrer-Policy, Permissions-Policy, trojica izolácie cross-origin, úniky verzie, zastarané hlavičky a príznaky cookies — každé zistenie spárované s presnýmnginx, Apache a Expressriadky, ktoré to opravia. Všetko beží v prehliadači; stránka nikdy nekontaktuje kontrolovaný web.
Riadok stavu je voliteľný. Všetky riadky Set-Cookie sa kontrolujú. Ak treba mať politiku na hodnotenie, zostaví sa v generátore CSP; blok hlavičiek riadok po riadku rozloží analyzátor hlavičiek HTTP.
Zatiaľ žiadne hodnotenie. Vloží sa hlavičky odpovede a stlačí sa Kontrola hlavičiek, alebo sa načíta vzorka.
Riadky opravy pre každé zistenie sa zobrazia tu po kontrole.
Rozsah tohto kontrolóra oproti kontrole SSL. Táto stránka hodnotí bezpečnostné hlavičky odpovede (zoznam OWASP vyššie). Kontrola zabezpečenia SSL hodnotí nastavenie HTTPS: reťaz certifikátov, verzie protokolov, silu šifier a zmiešaný obsah. HSTS a príznaky cookies sa objavujú na oboch stránkach, lebo oba zoznamy ich obsahujú, no z iného uhla pohľadu — na úplný obraz sa spustia obe kontroly.
Autotest
Znovu spustí hodnotiaci nástroj nad pevnými blokmi hlavičiek: dobrá ukážka na úrovni A+, zlá ukážka na úrovni F so všetkými odpočtami, každé pravidlo izolovane (aritmetika skóre), strop pre únik verzie, informatívne poznámky k cookies, poznámky ku kvalite CSP, frame-ancestors ako ochrana pred rámovaním, hranice hodnotení na oboch stranách každej hranice, opravné úryvky a záporné cesty. Nič sa nikam neodosiela.
Čo sú bezpečnostné hlavičky?
Jednou vetou: bezpečnostné hlavičky sú hlavičky odpovede, ktoré prehliadaču nariaďujú vynútiť ochranu, na ktorú nemohol prísť sám — nikdy nenačítať skripty z neznámych pôvodov, nikdy nekomunikovať cez obyčajný HTTP s týmto hostiteľom, nikdy nerámovať túto stránku — a každá stojí jeden riadok konfigurácie.
Hlavičky, ktoré táto stránka hodnotí
HlavičkaChráni predodporúčaná hodnota OWASP
Strict-Transport-Securityzníženie úrovne protokolu a krádež cookies pri prvej požiadavke cez obyčajný HTTPmax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, škodlivé vložené prvky, zmiešaný obsahdefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-Optionszámena MIME (skript podávaný ako obrázok)nosniff
X-Frame-Options / CSP frame-ancestorsclickjacking (stránka rámovaná útočníkom)deny / 'none'
Referrer-Policyúnik URL (s tokenmi) na stránky tretích stránno-referrer
Permissions-Policystránky a vložené prvky potichu využívajú kameru, mikrofón, polohuvšetky funkcie vypnuté
Cross-Origin-Opener-Policyiné okná zasahujúce do kontextu prehliadaniasame-origin
Cross-Origin-Embedder-Policynačítavanie zdrojov, ktoré sa na to neprihlásili (umožňuje izoláciu procesov)require-corp
Cross-Origin-Resource-Policyzdroje vložené inými stránkamisame-origin
Ako sa počíta hodnotenie

Začína sa na 100 a odpočítava sa: −25 za chýbajúci CSP, −20 za chýbajúci HSTS, −10 za každú chýbajúcu hlavičku X-Content-Type-Options, Referrer-Policy alebo ochranu pred rámovaním, −5 za každú z trojice cross-origin a za Permissions-Policy, −5 za úniky verzie v Server/X-Powered-By (s hornou hranicou) a −5 za nenulovú hodnotu X-XSS-Protection. Písmenové hodnotenia: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, pod tým = F. Informačné poznámky (príznaky cookies, riadenie cache, kvalita CSP) sa neodpočítavajú.

Časté chyby
  • Nastavovanie hlavičiek na nesprávnych odpovediach. Pridávajú sa na každú odpoveď vrátane chybových stránok a presmerovaní — na to slúži always v add_header ... always; (nginx) a Header always set (Apache).
  • Testovanie iba domovskej stránky. Proxy, cache a staršie aplikácie hlavičky na niektorých cestách často odstránia alebo prepíšu. Treba skontrolovať stránky, na ktorých záleží: prihlásenie, pokladnicu, koncové body API.
  • Ponechanie X-XSS-Protection. Auditor, ktorý riadila, spôsoboval vlastné zraniteľnosti; prehliadače ju odstránili. Nenulová hodnota teraz zámerne znižuje skóre — ak sa odstráni, úlohu prevezme CSP.
  • Presvedčenie, že X-Frame-Options je aktuálna. Nemôže povoliť konkrétne pôvody a nie je v štandarde CSP; moderná náhrada je frame-ancestors. Počas prechodu je oboje v poriadku — táto stránka prijme ktorúkoľvek.
  • Posielanie bannerov verzií. Server: Apache/2.4.58 (Unix) zužuje útočníkovo hľadanie známych chýb bez akéhokoľvek prínosu. Verziu treba odstrániť a počet riadkov udržať nízko.
FAQ

Prečo COOP/COEP/CORP stoja len 5 bodov každá? Trojica je najnovšia vrstva, potrebná hlavne tam, kde sa chce izolácia procesov (SharedArrayBuffer, ochrana pred Spectre). Stránka bez nich si zachová svoju základnú ochranu; s nimi si niektoré cross-origin vložené prvky vyžadujú úpravy — preto majú menšiu váhu než CSP alebo HSTS.

Znamená vysoké hodnotenie, že stránka je bezpečná? Nie — znamená to, že hlavičky odpovede sú nastavené. Bezpečnostné hlavičky sú jedna vrstva: konfigurácia TLS, správa relácií, validácia vstupov a opravy stále rozhodujú o tom, či je stránka skutočne bezpečná. Pre vrstvu TLS sa spustí Kontrolu zabezpečenia SSL.

Prečo je hodnota Permissions-Policy taká dlhá? Základ OWASP výslovne vypína každú funkciu, takže keď prehliadač pridá nové funkcie, tíško sa znova nezapnú. Kratšia hodnota ako camera=(), microphone=(), geolocation=() je začiatok — len treba vedieť, čo necháva zapnuté.

Dá sa tu skontrolovať hlavičky ľubovoľnej stránky? Táto stránka nikdy nevykonáva sieťové požiadavky — hodnotí presne text, ktorý sa vloží, takže funguje aj za firewallom a na interných hostiteľoch a nič, čo sa kontroluje, neopustí počítač. Získanie hlavičiek je jeden príkaz curl -sI v termináli.

Čo so Clear-Site-Data a X-Permitted-Cross-Domain-Policies? Užitočné sú v úzkych scenároch (odpovede pri odhlásení; staršie prehliadače PDF/Flash). Tu sú len informatívne, nehodnotia sa — posielať Clear-Site-Data na každú odpoveď by pri každom načítaní stránky vymazalo úložisko používateľov.