Nejsou firewallem a neopraví narušenou autorizaci, zranitelná API, SQL injection, uniklé přihlašovací údaje ani zastaralé závislosti. Bezpečnostní hlavičky jsou vrstvou hloubkové obrany: zmenšují prostor pro útok v prohlížeči a omezují, co se může stát poté, co už byla zneužita jiná slabina.
V roce 2026 je užitečné rozlišovat tři kategorie:
- Základní hlavičky, které dávají smysl pro většinu webů.
- Hlavičky závislé na architektuře, které mohou při zkopírování bez analýzy rozbít OAuth, platby, CDN, iframy nebo doručování PDF.
- Zastaralé hlavičky, které by se neměly zapínat jen kvůli zlepšení skóre v zastaralém skeneru.
TL;DR: začněte pečlivě navrženou Content Security Policy, HSTS až po plném nasazení HTTPS,
X-Content-Type-Options: nosniff, explicitníReferrer-Policya zdrženlivouPermissions-Policy. Použijte CSPframe-ancestorsjako hlavní ochranu proti rámování aX-Frame-Optionsponechte jen jako vrstvu kompatibility. COOP, COEP a CORP nasazujte až po prověření cross-origin integrací. Odstraňte nebo vypněteX-XSS-Protection,Expect-CT, HPKP a starou hlavičkuReport-To.
Doporučení a kompatibilita byly naposledy ověřeny 23. července 2026.
Hlavní hlavičky ve zkratce
| Hlavička | Typické doporučení | Co omezuje | Používat všude? |
|---|---|---|---|
Content-Security-Policy |
politika specifická pro aplikaci, nejlépe založená na nonce nebo hashích | XSS, injekce, neschválené originy zdrojů a rámování | ano pro HTML, po otestování |
Strict-Transport-Security |
max-age=31536000; includeSubDomains; preload přidávejte až po prověření |
downgrade na HTTP a obcházení chyb certifikátů | ano, když je celá doména připravená na HTTPS |
X-Content-Type-Options |
nosniff |
MIME sniffing a některé záměny MIME | ano |
Referrer-Policy |
strict-origin-when-cross-origin nebo přísnější |
únik cesty a dotazu z URL | ano |
Permissions-Policy |
vypnout nepoužívané funkce, jako je camera=(), microphone=(), geolocation=() |
používání vybraných API prohlížeče dokumenty a rámy | obvykle, po otestování funkcí |
CSP frame-ancestors |
'none', 'self' nebo explicitní originy |
clickjacking a nežádoucí rámování | ano pro HTML dokumenty |
X-Frame-Options |
DENY nebo SAMEORIGIN kvůli kompatibilitě |
rámování ve starších implementacích | často, spolu s frame-ancestors |
Cross-Origin-Opener-Policy |
často same-origin, pokud nejsou potřeba vztahy mezi vyskakovacími okny |
některé XS-Leaks a přístup přes window.opener |
závisí na architektuře |
Cross-Origin-Embedder-Policy |
require-corp nebo credentialless, jen záměrně |
vkládání cross-origin zdrojů bez povolení | ne, ne automaticky |
Cross-Origin-Resource-Policy |
same-origin, same-site nebo cross-origin podle zdroje |
nežádoucí cross-origin čtení bez CORS | závisí na zdroji |
Cache-Control |
no-store pro vysoce citlivé odpovědi; private pro personalizovaný obsah |
ukládání v prohlížeči a mezilehlých cache | pro citlivé odpovědi |
Set-Cookie |
Secure; HttpOnly; SameSite=Lax/Strict podle situace |
krádež a nevhodné cross-site odesílání cookies | pro relační cookies |
Reporting-Endpoints |
endpoint pro reporty CSP/COOP/COEP | pozorovatelnost politik | volitelné |
X-XSS-Protection |
vynechat nebo nastavit na 0 |
zastaralý XSS filtr | nezapínat |
Expect-CT |
odstranit | zastaralý mechanismus Certificate Transparency | ne |
Public-Key-Pins |
nepoužívat | historický pinning certifikátů | ne |
OWASP považuje hlavičky odpovědí za cenné prostředky pro zpevnění zabezpečení, ale zdůrazňuje, že každá hodnota musí odpovídat typu odpovědi a architektuře aplikace.
Minimální výchozí bod
Toto je výchozí šablona, nikoli univerzální řešení k okopírování:
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
Tato politika blokuje inline skripty a styly, neuvedené originy zdrojů, rámování, formuláře odesílané na jiné originy, přístup ke kameře/mikrofonu/geolokaci a navigaci přes HTTP poté, co bylo uloženo HSTS.
Pokud web používá externí fonty, analytiku, mapy, platební widgety, OAuth, správce značek, API třetích stran nebo inline kód, je nutné politiku přizpůsobit.
1. Content-Security-Policy: nejsilnější a nejnáročnější hlavička
Content-Security-Policy určuje, odkud smí prohlížeč načítat skripty, styly, obrázky, fonty, rámy a síťová spojení. Správná CSP může výrazně omezit dopad XSS a injekce dat, ale nenahrazuje validaci vstupů, kódování výstupů a bezpečná DOM API.
Základní direktivy
| Direktiva | Účel | Běžná výchozí hodnota |
|---|---|---|
default-src |
záloha pro typy zdrojů bez vlastní direktivy | 'self' |
script-src |
povolené skripty | nonce nebo hashe, volitelně 'self' |
style-src |
povolené styly | 'self', nonce nebo hashe |
img-src |
obrázky | 'self' data: https: |
font-src |
fonty | 'self' a explicitní originy CDN |
connect-src |
Fetch, XHR, WebSocket a EventSource | vaše API a explicitní endpointy |
frame-src |
rámy vkládané stránkou | pouze potřebné originy |
frame-ancestors |
kteří rodiče smějí vložit tuto stránku | 'none' nebo 'self' |
form-action |
platné cíle formulářů | 'self' nebo explicitní endpointy |
base-uri |
povolené URL <base> |
'self' nebo 'none' |
object-src |
pluginy <object> a <embed> |
'none' |
upgrade-insecure-requests |
přepsat HTTP podřízené zdroje na HTTPS | bez hodnoty |
Allowlisty versus striktní CSP
Allowlist domén se může stát křehkým. Důvěryhodná CDN může hostovat mnoho nesouvisejících souborů a načítač třetí strany může dynamicky přitáhnout další závislosti. web.dev doporučuje striktní CSP založenou na nonce nebo hashích; strict-dynamic umožňuje, aby skripty načtené důvěryhodným skriptem zdědily důvěru.
Pří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
Odpovídající HTML:
<script nonce="{RANDOM_NONCE}">
window.__APP_CONFIG__ = { apiUrl: "https://api.example.com" };
</script>
Nonce musí být nepředvídatelný, jedinečný pro každou HTML odpověď, přítomný v hlavičce i v důvěryhodných prvcích a generovaný serverem. Konstantní nonce uložený v konfiguraci neposkytuje zamýšlenou ochranu. Pro statické stránky, které nedokážou generovat novou hodnotu na každý požadavek, mohou být praktičtější hashe.
Vyhněte se unsafe-inline a unsafe-eval
'unsafe-inline' v script-src povoluje inline JavaScript a výrazně oslabuje ochranu proti XSS. 'unsafe-eval' zapíná API, která spouštějí řetězce jako kód, včetně eval() a konstruktoru Function.
Nepřidávejte je jen kvůli umlčení hlášení v konzoli. Místo toho:
- přesuňte inline kód do externích souborů;
- použijte nonce nebo hash;
- identifikujte závislost vyžadující
eval; - hledejte jinou konfiguraci sestavení nebo knihovny.
Trusted Types
Politika jako:
Content-Security-Policy: require-trusted-types-for 'script'; trusted-types app-policy
může vyžadovat typované hodnoty ve vybraných DOM XSS cílech, jako je innerHTML. Od února 2026 je require-trusted-types-for dostupná v aktuálních hlavních prohlížečích, i když starší verze ji nemusí podporovat.
Trusted Types je pokročilá obrana. Aplikace musí definovat bezpečné transformační politiky a frameworky i závislosti musí být kompatibilní. Samotné přidání hlavičky nestačí.
Začněte s Report-Only
Bezpečnější zavádění začíná takto:
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ásí porušení, aniž by blokovala zdroje, což umožňuje identifikovat chybějící originy a rozbité toky před vynucováním. Reporting-Endpoints nahrazuje zastaralou hlavičku Report-To a pro současná nasazení by měla být upřednostňována.
Reportovací endpoint by měl vynucovat limity velikosti payloadu, omezování rychlosti (rate limiting), bezpečné logování, kódování výstupů a krátkou, účelově vázanou dobu uchovávání. CSP reporty mohou obsahovat URL a detaily o zdrojích.
2. Strict-Transport-Security: HTTPS bez možnosti downgradu
HSTS říká prohlížeči, že host smí být kontaktován pouze přes HTTPS. Po uložení prohlížeč povyšuje budoucí pokusy o HTTP a brání uživatelům v obcházení některých chyb certifikátů.
Strict-Transport-Security: max-age=31536000; includeSubDomains
max-age=31536000ukládá politiku na jeden rok.includeSubDomainspokrývá subdomény.preloadznačí záměr připojit se k preload seznamu prohlížečů.
Nezačínejte s preload
Chybné nasazení HSTS může zablokovat legitimní uživatele. Stará subdoména pouze na HTTP, prošlý certifikát nebo služba třetí strany pod vaší doménou mohou učinit includeSubDomains a dlouhý max-age nebezpečnými.
Opatrné zavádění může použít:
5 minutes → 1 day → 1 week → 1 month → 1 year
V každé fázi otestujte apex doménu, aktivní subdomény, wildcard a SAN certifikáty, zastaralé služby, administrační panely, API a partnerské endpointy.
HSTS preload vyžaduje platný certifikát, přesměrování z HTTP na HTTPS, dostatečně dlouhý max-age, includeSubDomains a token preload. Odebrání může trvat týdny, protože seznam je distribuován uvnitř prohlížečů.
3. X-Content-Type-Options: zastavte hádání MIME
X-Content-Type-Options: nosniff
Tím se prohlížeči říká, aby respektoval deklarovaný Content-Type, místo aby odpověď interpretoval jako jiný typ. Skripty a styly mohou být blokovány, pokud jejich MIME typ neodpovídá očekávanému.
Nenahrazuje správnou konfiguraci serveru. Odpovědi stále potřebují přesné 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
To je obzvláště důležité u nahrávání od uživatelů, stahovacích endpointů, dynamicky generovaných souborů, objektových úložišť, CDN a chybových odpovědí, které mohou vracet HTML místo JSON.
4. Referrer-Policy: omezte únik URL
Referrer-Policy řídí, jak velká část URL aktuální stránky smí být odeslána v hlavičce Referer při vyžádání jiného zdroje.
Rozumné výchozí nastavení je:
Referrer-Policy: strict-origin-when-cross-origin
Posílá plnou URL pro same-origin požadavky, pouze origin pro cross-origin HTTPS požadavky a žádný referrer při downgradu z HTTPS na HTTP.
Přísnější alternativy zahrnují:
Referrer-Policy: no-referrer
nebo:
Referrer-Policy: same-origin
Volba může ovlivnit analytiku, affiliate systémy a poskytovatele plateb. Tajné údaje, tokeny, e-mailové adresy a osobní data by v URL neměly být vůbec uváděny.
5. Ochrana proti clickjackingu: frame-ancestors a X-Frame-Options
Nejpružnějším prostředkem je CSP:
Content-Security-Policy: frame-ancestors 'none'
nebo:
Content-Security-Policy: frame-ancestors 'self' https://portal.partner.example
frame-ancestors určuje, kteří rodiče smějí vložit dokument do <frame>, <iframe>, <object> nebo <embed>.
Kvůli kompatibilitě přidejte:
X-Frame-Options: DENY
nebo:
X-Frame-Options: SAMEORIGIN
MDN doporučuje frame-ancestors pro moderní nasazení, protože je výraznější. ALLOW-FROM je zastaralá a může způsobit, že aktuální prohlížeče hlavičku ignorují. X-Frame-Options musí být HTTP hlavička; verze přes <meta http-equiv> nemá žádný účinek.
6. Permissions-Policy: vypněte funkce, které web nepoužívá
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
Hlavička řídí přístup dokumentu a jeho rámů k vybraným funkcím prohlížeče, včetně kamery, mikrofonu a geolokace.
Povolte aktuální origin:
Permissions-Policy: geolocation=(self), camera=(), microphone=()
Nebo povolte explicitní origin:
Permissions-Policy: geolocation=(self "https://maps.example")
Nekopírujte obrovský seznam všech známých direktiv. Jednotlivé direktivy mají různou podporu v prohlížečích a některé zůstávají experimentální. Identifikujte funkce, které aplikace používá, a poté explicitně vypněte relevantní nepoužívané.
7. COOP, COEP a CORP: cross-origin izolace není univerzální výchozí volba
Tyto hlavičky spolu souvisejí, ale řeší různé problémy.
Cross-Origin-Opener-Policy
Cross-Origin-Opener-Policy: same-origin
COOP řídí, zda dokumenty otevřené navigací nebo přes window.open() sdílejí skupinu kontextu prohlížení. same-origin odděluje dokument od cross-origin otvíračů a zmírňuje některé XS-Leaks.
Může rozbít OAuth popupy, platební okna a integrace spoléhající na window.opener. V některých případech je vhodnější 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 zdroje no-cors udělily povolení přes CORP nebo byly načteny pomocí CORS. Chybějící hlavičky mohou blokovat obrázky, fonty, skripty, rámy a další prostředky třetích stran.
Alternativou je:
Cross-Origin-Embedder-Policy: credentialless
To povoluje některé zdroje no-cors bez explicitního CORP a přitom odstraňuje přihlašovací údaje, jako jsou cookies.
Cross-Origin-Resource-Policy
Cross-Origin-Resource-Policy: same-origin
CORP je politika na samotném zdroji a může používat:
same-origin,same-site,cross-origin.
Není náhradou za CORS. MDN také dokumentuje problém v Chrome týkající se částečného vykreslování PDF při některých nasazeních CORP, takže by hlavička neměla být aplikována globálně bez testů.
Dvojice:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
umožňuje cross-origin izolaci vyžadovanou vybranými pokročilými API, včetně plného přístupu k SharedArrayBuffer. Nenasazujte ji pouze kvůli skóre ve skeneru.
8. Zabezpečené cookies a cachování
Set-Cookie a Cache-Control nejsou vždy uváděny jako bezpečnostní hlavičky, ale přímo chrání relace a citlivá data.
Relační cookie
Set-Cookie: __Host-session=RANDOM_VALUE; Path=/; Secure; HttpOnly; SameSite=Lax
Secureomezuje přenos na HTTPS.HttpOnlybrání přístupu z JavaScriptu.SameSiteomezuje cross-site odesílání.__Host-vyžadujeSecure,Path=/a žádnouDomain, čímž váže cookie těsněji k hostu.
SameSite=Strict je silnější, ale může narušit návraty od poskytovatelů přihlášení nebo plateb. SameSite=None vyžaduje Secure a měla by se používat jen pro skutečně cross-site cookie.
Citlivé odpovědi
Cache-Control: no-store
To žádá soukromé i sdílené cache, aby odpověď neukládaly. Personalizovaný obsah, který smí být cachován v prohlížeči, ale ne u mezilehlých uzlů, může použít:
Cache-Control: private, no-cache
MDN doporučuje personalizované odpovědi explicitně označovat jako private, aby se předešlo nechtěnému sdílenému cachování.
9. Omezte prozrazování technologií
Hlavičky jako:
Server: nginx/1.24.0
X-Powered-By: PHP/8.4
X-AspNet-Version: 4.0.30319
usnadňují fingerprinting. Jejich odstranění neschová technologický stack před odhodlaným útočníkem, ale vyhne se přímému prozrazení verze.
- odstraňte
X-Powered-By; - vypněte hlavičky s verzí frameworku;
- omezte podrobnosti v
Server; - nezveřejňujte záměrně nepravdivou verzi;
- nezaměňujte zatajování za záplatování.
OWASP doporučuje odstranit X-Powered-By a omezit Server, přičemž poznamenává, že technologie lze i tak odvodit jinými způsoby.
10. Zastaralé hlavičky a zavádějící rady
X-XSS-Protection
Nezapínejte:
X-XSS-Protection: 1; mode=block
OWASP varuje, že zastaralé XSS filtry mohou vytvořit zranitelnosti v jinak bezpečných stránkách. Hlavičku vynechte, nebo ji explicitně vypněte:
X-XSS-Protection: 0
Místo toho použijte CSP, kódování výstupů a bezpečná API.
Expect-CT
Expect-CT je v praxi zastaralá, protože aktuální klienti vyžadují Certificate Transparency u moderních certifikátů. MDN ji od června 2021 popisuje jako převážně zastaralou.
Public-Key-Pins
HPKP by se nemělo nasazovat. Chybný pin by mohl uživatele na dlouhou dobu zablokovat a hlavička byla z moderních prohlížečů odstraněna. Upřednostněte správné TLS, automatickou obnovu, CAA, monitorování certifikátů a pečlivě prověřený HSTS preload.
Report-To
Stará:
Report-To: { ... }
je zastaralá. Použijte:
Reporting-Endpoints: csp="https://example.com/reports/csp"
Access-Control-Allow-Origin: *
CORS není balík hlaviček pro zpevnění zabezpečení, který by se přidával globálně. Access-Control-Allow-Origin uvolňuje Same-Origin Policy. Odpovědi API s přihlašovacími údaji nemohou bezpečně kombinovat zástupný znak * s ověřeným cross-origin přístupem. Povolte pouze potřebné originy a validujte je na straně serveru.
11. Příklady konfigurace serveru
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é, protože zachovává hlavičky u chybových a nestandardních stavových odpovědí.
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 musí být odeslány před tělem odpovědi. Pro každý požadavek generujte samostatně 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();
});
Web využívající CDN, WebSockety, OAuth, platby nebo mapy bude potřebovat širší, ale stále explicitní CSP.
12. Postup zavádění, který se vyhne výpadkům
Inventarizace
Sepište všechny originy skriptů, stylů, fontů a obrázků; API a WebSocket endpointy; iframy; OAuth/platební popupy; zdroje CDN; nahrávání od uživatelů; subdomény pod HSTS a funkce prohlížeče, které aplikace používá.
Pozorování
- spusťte CSP v režimu Report-Only;
- sbírejte reporty a hlášení porušení z konzole prohlížeče;
- otestujte každou kritickou uživatelskou cestu;
- zahrňte mobilní a podporované prohlížeče;
- zkontrolujte chybové stránky, přesměrování a statické prostředky.
Vynucujte postupně
- začněte s
object-src,base-uri,frame-ancestorsaform-action; - přejděte na statické zdroje;
- striktní
script-srcvynuťte jako poslední; - zvyšujte HSTS
max-agepostupně; - testujte COOP/COEP samostatně proti popupovým a cross-origin integracím.
Sledujte regrese
CI testy by měly stahovat reprezentativní URL, detekovat duplicitní nebo konfliktní hlavičky, potvrzovat MIME typy, odhalovat nechtěné odstranění CSP/HSTS a spouštět end-to-end přihlašovací a platební toky.
13. Jak testovat hlavičky
Zkontrolujte odpověď přímo:
curl -I https://example.com/
Sledujte přesměrování:
curl -IL https://example.com/
Prozkoumejte konkrétní zdroj:
curl -I https://example.com/assets/app.js
Ověřte hlavičky na domovské stránce, přihlášení, odpovědích 404 a 500; potvrďte, že CSP není duplikována s konfliktními politikami; ujistěte se, že HSTS je odesíláno pouze přes HTTPS; zkontrolujte MIME typy; a ověřte, že CDN nebo reverzní proxy hlavičky neodstranily.
Bezplatný nástroj POLPROG Security Headers Inspector kontroluje HSTS, CSP, ochranu proti rámování a další prostředky. Pro kontrolu certifikátů a DNS použijte DNS & SSL Inspector a pro širší kontrolu SEO, výkonu, přístupnosti a zabezpečení Website Health Check.
Kontrolní seznam pro nasazení
CSP
- Restriktivní
default-src. -
object-src 'none'. - Omezené
base-uri. -
frame-ancestorsodpovídá skutečnému modelu vkládání. -
form-actionomezuje cíle formulářů. - Inline kód používá nonce nebo hash, když je to potřeba.
- Nonce je jedinečný pro každou odpověď.
- Žádné neopodstatněné
'unsafe-inline'. - Žádné neopodstatněné
'unsafe-eval'. - Politika nejprve otestována v režimu Report-Only.
- Reportovací endpoint má rate limity a omezené uchovávání.
HTTPS a HSTS
- Každá stránka a zdroj funguje přes HTTPS.
- HTTP se přesměrovává přímo na HTTPS.
- Certifikáty jsou monitorovány.
- Všechny subdomény jsou zinventarizovány.
-
max-agezvyšován postupně. -
includeSubDomainsje bezpečné. -
preloadpřidáno až po prověření důsledků.
Ostatní prostředky
-
X-Content-Type-Options: nosniff. - Správný
Content-Typeu každé odpovědi. - Explicitní
Referrer-Policy. -
Permissions-Policyvypíná nepoužívané funkce. - Žádné
ALLOW-FROMv X-Frame-Options. - COOP nerozbíjí OAuth ani platby.
- COEP neblokuje potřebné prostředky třetích stran.
- CORP odpovídá modelu sdílení každého zdroje.
- Relační cookies používají
Secure,HttpOnlya vhodnéSameSite. - Citlivé odpovědi používají správné
Cache-Control. - Hlavičky s verzí technologií jsou odstraněny.
-
X-XSS-Protectionchybí nebo je vypnuto. -
Expect-CT, HPKP a staráReport-Tojsou odstraněny.
Verdikt
Pro většinu firemních webů a webových aplikací je správné pořadí toto:
- Správné HTTPS, MIME typy a zabezpečené cookies.
- CSP specifická pro aplikaci, zaváděná přes Report-Only.
- HSTS nasazované po etapách.
nosniff, Referrer-Policy, Permissions-Policy a ochrana proti rámování.- COOP, COEP a CORP jen tehdy, když je cross-origin model pochopen.
- Odstranění zastaralých a informace prozrazujících hlaviček.
Nejlepší sada bezpečnostních hlaviček není ta nejdelší. Je to nejmenší politika, která přesně odpovídá aplikaci, obstojí při testování kritických cest a zůstává monitorována po každém nasazení.

