Nie sú firewallom a neopravujú poškodenú autorizáciu, zraniteľné API, SQL injekcie, uniknuté prihlasovacie údaje ani zastarané závislosti. Bezpečnostné hlavičky sú vrstvou obrany do hĺbky: znižujú útočnú plochu prehliadača a obmedzujú, čo sa môže stať po tom, ako už bola zneužitá iná slabina.
V roku 2026 je užitočné rozlíšiť tri kategórie:
- Základné hlavičky, ktoré majú zmysel pre väčšinu webových stránok.
- Hlavičky závislé od architektúry, ktoré môžu pri skopírovaní bez analýzy narušiť OAuth, platby, CDN, iframe alebo doručovanie PDF.
- Zastarané hlavičky, ktoré by sa nemali zapínať len preto, aby zlepšili skóre zastaraného skenera.
TL;DR: začnite starostlivo navrhnutou Content Security Policy, HSTS po úplnom nasadení HTTPS,
X-Content-Type-Options: nosniff, explicitnouReferrer-Policya zdržanlivouPermissions-Policy. Použite CSPframe-ancestorsako primárny nástroj proti framovaniu aX-Frame-Optionsponechajte len ako vrstvu kompatibility. COOP, COEP a CORP nasaďte až po preskúmaní cross-origin integrácií. Odstráňte alebo vypniteX-XSS-Protection,Expect-CT, HPKP a starú hlavičkuReport-To.
Odporúčania a kompatibilita boli naposledy overené 23. júla 2026.
Hlavné hlavičky v skratke
| Hlavička | Typické odporúčanie | Čo obmedzuje | Používať všade? |
|---|---|---|---|
Content-Security-Policy |
politika špecifická pre aplikáciu, prednostne založená na nonce alebo hash | XSS, injekcie, neschválené zdroje prostriedkov a framovanie | áno pre HTML, po otestovaní |
Strict-Transport-Security |
max-age=31536000; includeSubDomains; preload pridajte až po preskúmaní |
downgrade na HTTP a obchádzanie chýb certifikátov | áno, keď je celá doména pripravená na HTTPS |
X-Content-Type-Options |
nosniff |
MIME sniffing a niektoré zámeny MIME typov | áno |
Referrer-Policy |
strict-origin-when-cross-origin alebo prísnejšie |
únik cesty URL a parametrov dopytu | áno |
Permissions-Policy |
vypnite nepoužívané funkcie ako camera=(), microphone=(), geolocation=() |
používanie vybraných API prehliadača dokumentmi a rámcami | zvyčajne, po otestovaní funkcií |
CSP frame-ancestors |
'none', 'self' alebo explicitné zdroje |
clickjacking a nechcené framovanie | áno pre HTML dokumenty |
X-Frame-Options |
DENY alebo SAMEORIGIN pre kompatibilitu |
framovanie v starších implementáciách | často, spolu s frame-ancestors |
Cross-Origin-Opener-Policy |
často same-origin, pokiaľ nie sú potrebné vzťahy s vyskakovacími oknami |
niektoré XS-Leaks a prístup cez window.opener |
závisí od architektúry |
Cross-Origin-Embedder-Policy |
require-corp alebo credentialless, iba zámerne |
vkladanie cross-origin prostriedkov bez povolenia | nie, nie automaticky |
Cross-Origin-Resource-Policy |
same-origin, same-site alebo cross-origin podľa prostriedku |
nechcené no-CORS cross-origin čítania | závisí od prostriedku |
Cache-Control |
no-store pre vysoko citlivé odpovede; private pre personalizovaný obsah |
ukladanie v prehliadači a v medziľahlých cache | pre citlivé odpovede |
Set-Cookie |
Secure; HttpOnly; SameSite=Lax/Strict podľa potreby |
krádež a nevhodné cross-site odosielanie cookies | pre relačné cookies |
Reporting-Endpoints |
endpoint pre reporty CSP/COOP/COEP | pozorovateľnosť politík | voliteľné |
X-XSS-Protection |
vynechať alebo nastaviť na 0 |
zastaraný XSS filter | nezapínať |
Expect-CT |
odstrániť | zastaraný mechanizmus Certificate Transparency | nie |
Public-Key-Pins |
nepoužívať | historické pripínanie certifikátov | nie |
OWASP považuje hlavičky odpovedí za cenné nástroje na spevnenie zabezpečenia, pričom zdôrazňuje, že každá hodnota musí zodpovedať typu odpovede a architektúre aplikácie.
Minimálny východiskový bod
Toto je východisková šablóna, nie univerzálna odpoveď na skopírovanie a vloženie:
Content-Security-Policy: default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; img-src 'self' data: https:; font-src 'self'; style-src 'self'; script-src 'self'; connect-src 'self'; upgrade-insecure-requests
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
X-Frame-Options: DENY
Táto politika blokuje inline skripty a štýly, neuvedené zdroje prostriedkov, framovanie, formuláre odosielané na iné zdroje, prístup ku kamere/mikrofónu/geolokácii a navigáciu cez HTTP po uložení HSTS.
Ak stránka používa externé písma, analytiku, mapy, platobné widgety, OAuth, správcov značiek, API tretích strán alebo inline kód, politiku treba prispôsobiť.
1. Content-Security-Policy: najsilnejšia a najnáročnejšia hlavička
Content-Security-Policy definuje, odkiaľ môže prehliadač načítavať skripty, štýly, obrázky, písma, rámce a sieťové spojenia. Správne CSP môže výrazne znížiť dopad XSS a injekcie dát, ale nenahrádza validáciu vstupov, kódovanie výstupov a bezpečné DOM API.
Základné direktívy
| Direktíva | Účel | Bežná východisková hodnota |
|---|---|---|
default-src |
záložná hodnota pre typy prostriedkov bez vlastnej direktívy | 'self' |
script-src |
povolené skripty | nonce alebo hashe, voliteľne 'self' |
style-src |
povolené štýly | 'self', nonce alebo hashe |
img-src |
obrázky | 'self' data: https: |
font-src |
písma | 'self' a explicitné CDN zdroje |
connect-src |
Fetch, XHR, WebSocket a EventSource | vaše API a explicitné endpointy |
frame-src |
rámce vkladané stránkou | iba potrebné zdroje |
frame-ancestors |
ktorí rodičia môžu vkladať túto stránku | 'none' alebo 'self' |
form-action |
platné ciele formulárov | 'self' alebo explicitné endpointy |
base-uri |
povolené URL pre <base> |
'self' alebo 'none' |
object-src |
pluginy <object> a <embed> |
'none' |
upgrade-insecure-requests |
prepíše HTTP podzdroje na HTTPS | bez hodnoty |
Zoznamy povolených verzus striktné CSP
Zoznam povolených domén sa môže stať krehkým. Dôveryhodné CDN môže hostiť množstvo nesúvisiacich súborov a načítavač tretej strany môže dynamicky sťahovať ďalšie závislosti. web.dev odporúča striktné CSP založené na nonce alebo hashoch; strict-dynamic umožňuje, aby skripty načítané dôveryhodným skriptom zdedili dôveru.
Príklad politiky s nonce:
Content-Security-Policy:
default-src 'self';
base-uri 'self';
object-src 'none';
frame-ancestors 'none';
form-action 'self';
script-src 'nonce-{RANDOM_NONCE}' 'strict-dynamic';
style-src 'self' 'nonce-{RANDOM_NONCE}';
img-src 'self' data: https:;
font-src 'self';
connect-src 'self' https://api.example.com;
upgrade-insecure-requests
Zodpovedajúce HTML:
<script nonce="{RANDOM_NONCE}">
window.__APP_CONFIG__ = { apiUrl: "https://api.example.com" };
</script>
Nonce musí byť nepredvídateľný, jedinečný pre každú HTML odpoveď, prítomný v hlavičke aj v dôveryhodných prvkoch a generovaný serverom. Konštantný nonce uložený v konfigurácii neposkytuje zamýšľanú ochranu. Pre statické stránky, ktoré nedokážu vygenerovať novú hodnotu pri každej požiadavke, môžu byť praktickejšie hashe.
Vyhnite sa unsafe-inline a unsafe-eval
'unsafe-inline' v script-src povoľuje inline JavaScript a výrazne oslabuje ochranu pred XSS. 'unsafe-eval' umožňuje API, ktoré vykonávajú reťazce ako kód, vrátane eval() a konštruktora Function.
Nepridávajte ich len na to, aby ste umlčali porušenia v konzole. Namiesto toho:
- presuňte inline kód do externých súborov;
- použite nonce alebo hash;
- identifikujte závislosť, ktorá vyžaduje
eval; - hľadajte iné zostavenie alebo konfiguráciu knižnice.
Trusted Types
Politika ako:
Content-Security-Policy: require-trusted-types-for 'script'; trusted-types app-policy
môže vyžadovať typované hodnoty na vybraných DOM XSS miestach, ako je innerHTML. Od februára 2026 je require-trusted-types-for dostupné v aktuálnych hlavných prehliadačoch, hoci staršie vydania ho nemusia podporovať.
Trusted Types je pokročilá obrana. Aplikácia musí definovať bezpečné transformačné politiky a frameworky aj závislosti musia byť kompatibilné. Samotné pridanie hlavičky nestačí.
Začnite s Report-Only
Bezpečnejšie zavedenie začína s:
Content-Security-Policy-Report-Only: default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'; report-to csp-endpoint
Reporting-Endpoints: csp-endpoint="https://example.com/security/csp-reports"
Content-Security-Policy-Report-Only hlási porušenia bez blokovania prostriedkov, čo umožňuje identifikovať chýbajúce zdroje a narušené toky pred vynútením. Reporting-Endpoints nahrádza zastaranú hlavičku Report-To a pre súčasné nasadenia by mala mať prednosť.
Reportovací endpoint by mal vynucovať limity veľkosti payloadu, obmedzovanie počtu požiadaviek, bezpečné logovanie, kódovanie výstupov a krátku dobu uchovávania určenú na konkrétny účel. CSP reporty môžu obsahovať URL a podrobnosti o prostriedkoch.
2. Strict-Transport-Security: HTTPS bez možnosti downgradu
HSTS oznamuje prehliadaču, že hostiteľa treba kontaktovať iba cez HTTPS. Po uložení prehliadač povyšuje budúce pokusy o HTTP a bráni používateľom obísť niektoré chyby certifikátov.
Strict-Transport-Security: max-age=31536000; includeSubDomains
max-age=31536000ukladá politiku na jeden rok.includeSubDomainspokrýva subdomény.preloadsignalizuje zámer pridať sa do preload zoznamu prehliadača.
Nezačínajte s preload
Nesprávne nasadenie HSTS môže zablokovať legitímnych používateľov. Stará subdoména iba s HTTP, expirovaný certifikát alebo služba tretej strany pod vašou doménou môžu spraviť includeSubDomains a dlhý max-age nebezpečnými.
Opatrné zavedenie môže použiť:
5 minutes → 1 day → 1 week → 1 month → 1 year
V každej fáze otestujte apex doménu, aktívne subdomény, wildcard a SAN certifikáty, zastarané služby, administračné panely, API a partnerské endpointy.
HSTS preload vyžaduje platný certifikát, presmerovania z HTTP na HTTPS, dostatočne dlhý max-age, includeSubDomains a token preload. Odstránenie môže trvať týždne, pretože zoznam sa dodáva priamo v prehliadačoch.
3. X-Content-Type-Options: zastavte hádanie MIME typov
X-Content-Type-Options: nosniff
Toto hovorí prehliadaču, aby rešpektoval deklarovaný Content-Type namiesto toho, aby si odpoveď vykladal ako iný typ. Skripty a štýly môžu byť zablokované, keď ich MIME typ nezodpovedá očakávanému.
Nenahrádza správnu konfiguráciu servera. Odpovede stále potrebujú presné hodnoty:
Content-Type: text/html; charset=utf-8
Content-Type: text/css; charset=utf-8
Content-Type: application/javascript; charset=utf-8
Content-Type: application/json; charset=utf-8
Content-Type: image/avif
Toto je obzvlášť dôležité pri používateľských nahrávaniach, endpointoch na sťahovanie, dynamicky generovaných súboroch, objektovom úložisku, CDN a chybových odpovediach, ktoré môžu vrátiť HTML namiesto JSON.
4. Referrer-Policy: obmedzte únik URL
Referrer-Policy riadi, koľko z URL aktuálnej stránky sa môže odoslať v hlavičke Referer pri požiadavke na iný prostriedok.
Rozumné predvolené nastavenie je:
Referrer-Policy: strict-origin-when-cross-origin
Odosiela celú URL pri same-origin požiadavkách, iba zdroj (origin) pri cross-origin HTTPS požiadavkách a žiadny referrer pri downgrade z HTTPS na HTTP.
Prísnejšie alternatívy zahŕňajú:
Referrer-Policy: no-referrer
alebo:
Referrer-Policy: same-origin
Voľba môže ovplyvniť analytiku, affiliate systémy a poskytovateľov platieb. Tajomstvá, tokeny, e-mailové adresy a osobné údaje by sa v prvom rade vôbec nemali umiestňovať do URL.
5. Ochrana pred clickjackingom: frame-ancestors a X-Frame-Options
Najflexibilnejším nástrojom je CSP:
Content-Security-Policy: frame-ancestors 'none'
alebo:
Content-Security-Policy: frame-ancestors 'self' https://portal.partner.example
frame-ancestors definuje, ktorí rodičia môžu vložiť dokument do <frame>, <iframe>, <object> alebo <embed>.
Pre kompatibilitu pridajte:
X-Frame-Options: DENY
alebo:
X-Frame-Options: SAMEORIGIN
MDN odporúča frame-ancestors pre moderné nasadenia, pretože je výraznejšie. ALLOW-FROM je zastarané a môže spôsobiť, že aktuálne prehliadače hlavičku ignorujú. X-Frame-Options musí byť HTTP hlavička; verzia cez <meta http-equiv> nemá žiadny účinok.
6. Permissions-Policy: vypnite funkcie, ktoré stránka nepoužíva
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
Hlavička riadi prístup dokumentu a jeho rámcov k vybraným funkciám prehliadača vrátane kamery, mikrofónu a geolokácie.
Povoľte aktuálny zdroj (origin):
Permissions-Policy: geolocation=(self), camera=(), microphone=()
Alebo povoľte explicitný zdroj:
Permissions-Policy: geolocation=(self "https://maps.example")
Nekopírujte obrovský zoznam všetkých známych direktív. Jednotlivé direktívy majú rôznu podporu v prehliadačoch a niektoré zostávajú experimentálne. Identifikujte funkcie, ktoré aplikácia používa, a potom explicitne vypnite relevantné nepoužívané.
7. COOP, COEP a CORP: cross-origin izolácia nie je univerzálnym predvolením
Tieto hlavičky spolu súvisia, ale riešia rôzne problémy.
Cross-Origin-Opener-Policy
Cross-Origin-Opener-Policy: same-origin
COOP riadi, či dokumenty otvorené navigáciou alebo cez window.open() zdieľajú skupinu prehliadacieho kontextu. same-origin oddeľuje dokument od cross-origin otváračov a zmierňuje niektoré XS-Leaks.
Môže narušiť OAuth vyskakovacie okná, platobné okná a integrácie závisiace od window.opener. V niektorých prípadoch je vhodnejšie toto:
Cross-Origin-Opener-Policy: same-origin-allow-popups
Cross-Origin-Embedder-Policy
Cross-Origin-Embedder-Policy: require-corp
COEP vyžaduje, aby cross-origin prostriedky no-cors udelili povolenie cez CORP alebo aby boli načítané s CORS. Chýbajúce hlavičky môžu blokovať obrázky, písma, skripty, rámce a ďalšie prostriedky tretích strán.
Alternatívou je:
Cross-Origin-Embedder-Policy: credentialless
Toto povoľuje niektoré prostriedky no-cors bez explicitného CORP, pričom odstraňuje prihlasovacie údaje ako cookies.
Cross-Origin-Resource-Policy
Cross-Origin-Resource-Policy: same-origin
CORP je politika na samotnom prostriedku a môže používať:
same-origin,same-site,cross-origin.
Nie je náhradou za CORS. MDN tiež dokumentuje problém v prehliadači Chrome týkajúci sa čiastočného vykresľovania PDF pri niektorých nasadeniach CORP, takže hlavičku by sa nemalo aplikovať globálne bez testov.
Dvojica:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
umožňuje cross-origin izoláciu vyžadovanú vybranými pokročilými API vrátane úplného prístupu k SharedArrayBuffer. Nenasadzujte ju len kvôli skóre skenera.
8. Bezpečné cookies a ukladanie do cache
Set-Cookie a Cache-Control sa nie vždy uvádzajú ako bezpečnostné hlavičky, ale priamo chránia relácie a citlivé údaje.
Relačné cookie
Set-Cookie: __Host-session=RANDOM_VALUE; Path=/; Secure; HttpOnly; SameSite=Lax
Secureobmedzuje prenos na HTTPS.HttpOnlyzabraňuje prístupu cez JavaScript.SameSiteobmedzuje cross-site odosielanie.__Host-vyžadujeSecure,Path=/a žiadnyDomain, čím pevnejšie viaže cookie na hostiteľa.
SameSite=Strict je silnejšie, ale môže narušiť návraty od poskytovateľov prihlásenia alebo platieb. SameSite=None vyžaduje Secure a malo by sa používať iba pre skutočne cross-site cookie.
Citlivé odpovede
Cache-Control: no-store
Toto žiada súkromné aj zdieľané cache, aby odpoveď neukladali. Personalizovaný obsah, ktorý sa môže ukladať v prehliadači, ale nie u medziľahlých subjektov, môže použiť:
Cache-Control: private, no-cache
MDN odporúča explicitne označiť personalizované odpovede ako private, aby sa predišlo náhodnému zdieľanému ukladaniu do cache.
9. Obmedzte odhaľovanie technológií
Hlavičky ako:
Server: nginx/1.24.0
X-Powered-By: PHP/8.4
X-AspNet-Version: 4.0.30319
uľahčujú vytváranie odtlačku (fingerprinting). Ich odstránenie neskryje technologický stack pred odhodlaným útočníkom, ale zabráni priamemu odhaleniu verzie.
- odstráňte
X-Powered-By; - vypnite hlavičky s verziami frameworkov;
- obmedzte podrobnosti v
Server; - nezverejňujte zámerne falošnú verziu;
- nezamieňajte skrývanie za záplatovanie.
OWASP odporúča odstrániť X-Powered-By a obmedziť Server, pričom poznamenáva, že technológie sa dajú odvodiť aj inými spôsobmi.
10. Zastarané hlavičky a zavádzajúce rady
X-XSS-Protection
Nezapínajte:
X-XSS-Protection: 1; mode=block
OWASP varuje, že zastarané XSS filtre môžu vytvárať zraniteľnosti v inak bezpečných stránkach. Hlavičku vynechajte alebo ju explicitne vypnite:
X-XSS-Protection: 0
Namiesto toho použite CSP, kódovanie výstupov a bezpečné API.
Expect-CT
Expect-CT je v praxi zastarané, pretože súčasní klienti vyžadujú Certificate Transparency pre moderné certifikáty. MDN ho opisuje ako do veľkej miery zastarané od júna 2021.
Public-Key-Pins
HPKP by sa nemalo nasadzovať. Nesprávny pin by mohol na dlhý čas zablokovať používateľov a hlavička bola z moderných prehliadačov odstránená. Uprednostnite správne TLS, automatickú obnovu, CAA, monitorovanie certifikátov a starostlivo preskúmaný HSTS preload.
Report-To
Staré:
Report-To: { ... }
je zastarané. Použite:
Reporting-Endpoints: csp="https://example.com/reports/csp"
Access-Control-Allow-Origin: *
CORS nie je balík hlavičiek na spevnenie zabezpečenia, ktorý sa pridáva globálne. Access-Control-Allow-Origin uvoľňuje Same-Origin Policy. Odpovede API s prihlasovacími údajmi nemôžu bezpečne kombinovať zástupný znak * s autentifikovaným cross-origin prístupom. Povoľte iba potrebné zdroje a overte ich na strane servera.
11. Príklady konfigurácie servera
Nginx
add_header Content-Security-Policy "default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; img-src 'self' data: https:; style-src 'self'; script-src 'self'; connect-src 'self'; upgrade-insecure-requests" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header X-Frame-Options "DENY" always;
always je dôležité, pretože zachováva hlavičky pri chybových a neštandardných stavových odpovediach.
Apache
<IfModule mod_headers.c>
Header always set Content-Security-Policy "default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; img-src 'self' data: https:; style-src 'self'; script-src 'self'; connect-src 'self'; upgrade-insecure-requests"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set X-Frame-Options "DENY"
</IfModule>
PHP
<?php
header("Content-Security-Policy: default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; img-src 'self' data: https:; style-src 'self'; script-src 'self'; connect-src 'self'; upgrade-insecure-requests");
header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
header("X-Content-Type-Options: nosniff");
header("Referrer-Policy: strict-origin-when-cross-origin");
header("Permissions-Policy: camera=(), microphone=(), geolocation=()");
header("X-Frame-Options: DENY");
Hlavičky sa musia odoslať pred telom odpovede. Pre každú požiadavku vygenerujte samostatne kryptograficky náhodný nonce.
Node.js / Express
app.use((req, res, next) => {
res.setHeader(
"Content-Security-Policy",
"default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; img-src 'self' data: https:; style-src 'self'; script-src 'self'; connect-src 'self'; upgrade-insecure-requests"
);
res.setHeader(
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains"
);
res.setHeader("X-Content-Type-Options", "nosniff");
res.setHeader("Referrer-Policy", "strict-origin-when-cross-origin");
res.setHeader(
"Permissions-Policy",
"camera=(), microphone=(), geolocation=()"
);
res.setHeader("X-Frame-Options", "DENY");
res.removeHeader("X-Powered-By");
next();
});
Stránka používajúca CDN, WebSockety, OAuth, platby alebo mapy bude potrebovať širšie, ale stále explicitné CSP.
12. Proces zavádzania, ktorý predchádza výpadkom
Inventarizácia
Vypíšte všetky zdroje skriptov, štýlov, písem a obrázkov; API a WebSocket endpointy; iframe; OAuth/platobné vyskakovacie okná; CDN prostriedky; používateľské nahrávania; HSTS subdomény a funkcie prehliadača, ktoré aplikácia používa.
Pozorovanie
- spustite CSP v režime Report-Only;
- zbierajte reporty a porušenia z konzoly prehliadača;
- otestujte každú kritickú používateľskú cestu;
- zahrňte mobilné a podporované prehliadače;
- skontrolujte chybové stránky, presmerovania a statické prostriedky.
Vynucujte postupne
- začnite s
object-src,base-uri,frame-ancestorsaform-action; - prejdite na statické prostriedky;
- striktné
script-srcvynucujte ako posledné; - postupne zvyšujte HSTS
max-age; - COOP/COEP testujte samostatne oproti vyskakovacím oknám a cross-origin integráciám.
Sledujte regresie
CI testy by mali načítať reprezentatívne URL, zisťovať duplicitné alebo konfliktné hlavičky, potvrdzovať MIME typy, odhaľovať náhodné odstránenie CSP/HSTS a spúšťať end-to-end toky prihlásenia a platieb.
13. Ako testovať hlavičky
Skontrolujte odpoveď priamo:
curl -I https://example.com/
Sledujte presmerovania:
curl -IL https://example.com/
Preskúmajte konkrétny prostriedok:
curl -I https://example.com/assets/app.js
Overte hlavičky na domovskej stránke, pri prihlásení, na odpovediach 404 a 500; potvrďte, že CSP nie je duplikované s konfliktnými politikami; uistite sa, že HSTS sa odosiela iba cez HTTPS; skontrolujte MIME typy; a overte, že CDN alebo reverzný proxy hlavičky neodstránili.
Bezplatný POLPROG Security Headers Inspector kontroluje HSTS, CSP, ochranu pred framovaním a ďalšie nástroje. Použite DNS & SSL Inspector na kontrolu certifikátov a DNS a Website Health Check na širšie posúdenie SEO, výkonu, prístupnosti a bezpečnosti.
Kontrolný zoznam nasadenia
CSP
- Reštriktívne
default-src. -
object-src 'none'. - Obmedzené
base-uri. -
frame-ancestorszodpovedá skutočnému modelu vkladania. -
form-actionobmedzuje ciele formulárov. - Inline kód používa nonce alebo hash, keď je to potrebné.
- Nonce je jedinečný pre každú odpoveď.
- Žiadne neopodstatnené
'unsafe-inline'. - Žiadne neopodstatnené
'unsafe-eval'. - Politika najprv otestovaná v režime Report-Only.
- Reportovací endpoint má limity počtu požiadaviek a obmedzené uchovávanie.
HTTPS a HSTS
- Každá stránka a prostriedok funguje cez HTTPS.
- HTTP presmerúva priamo na HTTPS.
- Certifikáty sú monitorované.
- Všetky subdomény sú zinventarizované.
-
max-agezvyšované po fázach. -
includeSubDomainsje bezpečné. -
preloadpridané až po preskúmaní dôsledkov.
Ďalšie nástroje
-
X-Content-Type-Options: nosniff. - Správny
Content-Typena každej odpovedi. - Explicitná
Referrer-Policy. -
Permissions-Policyvypína nepoužívané funkcie. - Žiadne
ALLOW-FROMv X-Frame-Options. - COOP nenarušuje OAuth ani platby.
- COEP neblokuje potrebné prostriedky tretích strán.
- CORP zodpovedá modelu zdieľania každého prostriedku.
- Relačné cookies používajú
Secure,HttpOnlya vhodnéSameSite. - Citlivé odpovede používajú správny
Cache-Control. - Hlavičky s verziami technológií sú odstránené.
-
X-XSS-Protectionchýba alebo je vypnuté. -
Expect-CT, HPKP a staréReport-Tosú odstránené.
Záver
Pre väčšinu firemných webových stránok a webových aplikácií je správne poradie takéto:
- Správne HTTPS, MIME typy a bezpečné cookies.
- CSP špecifické pre aplikáciu, zavedené cez Report-Only.
- HSTS nasadené po fázach.
nosniff, Referrer-Policy, Permissions-Policy a ochrana pred framovaním.- COOP, COEP a CORP iba vtedy, keď je cross-origin model pochopený.
- Odstránenie zastaraných hlavičiek a hlavičiek unikajúcich informácie.
Najlepšia sada bezpečnostných hlavičiek nie je tá najdlhšia. Je to najmenšia politika, ktorá presne zodpovedá aplikácii, prežije testovanie kritických ciest a zostáva monitorovaná po každom nasadení.

