SEO-33
Chybí Content-Security-Policy
Co kontrola měří
V hlavičkách odpovědi úvodní stránky se hledá Content-. Chybí-li, vznikne nález. Stejně jako u ostatních bezpečnostních hlaviček se kontroluje jen úvodní stránka, jen přítomnost, a bez čerstvých hlaviček kontrola mlčí.
Obsah politiky se nehodnotí vůbec, a tady je to obzvlášť podstatné. Politika default-src *, která nezakazuje prakticky nic, projde stejně jako pečlivě sestavená. Kontrola říká „nemáte žádnou“, ne „máte špatnou“.
Co kontrola dál nedělá: nevidí politiku zapsanou značkou <meta http-equiv> místo hlavičky, nerozliší režim hlášení od vynucovaného, a neposuzuje ostatní stránky.
Nález je vázaný na úvodní stránku a je informativní: skóre nesnižuje ani o bod. To je záměr a důvod je v další sekci.
Jak silný důkaz za tím stojí
Doporučujeme to, protože to neuškodí nebo to má jiný užitek, ale vliv na to, jestli vás jazykové modely budou citovat, neslibujeme. Nikdo ho zatím nedoložil.
Na viditelnost v AI ani na pozici ve vyhledávání doložený vliv nemáme a netvrdíme ho. Jako u ostatních bezpečnostních hlaviček jde o bezpečnost, ne o SEO.
Proč je to jen informativní, na rozdíl od SEO-31 a SEO-32: protože spousta naprosto legitimních webů CSP nemá a chybí jim právem. Dobře napsaná politika je práce na dny, ne na řádek v konfiguraci: musíte vyjmenovat všechny zdroje, ze kterých web něco načítá, a udržovat ten seznam při každé změně.
A špatně napsaná politika umí rozbít web tiše. Zablokuje skript, který někde něco dělal, nikdo si toho hned nevšimne, a projeví se to až v hlášeních zákazníků. Proto vás k tomu netlačíme a proto to nesnižuje skóre.
Co CSP dělá, když ji máte: omezuje, odkud smí stránka načítat skripty, styly a další zdroje, a tím zavírá hlavní cestu, kterou se do stránky dostane cizí kód. U webu, kde uživatelé zadávají obsah, to má hodnotu. U statické prezentace je to nadstavba.
Praktický závěr: berte to jako připomenutí, ne jako úkol. Jestli se do CSP pustíte, dělejte to postupně a v režimu hlášení; viz níž.
Jak to opravit
Nezačínejte vynucovanou politikou. Začněte režimem, který nic neblokuje a jen hlásí, co by zablokoval:
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-reportNechte to běžet pár dní, posbírejte hlášení a teprve pak politiku dolaďte a přepněte na vynucovanou (Content-). Rozumný startovní tvar pro běžný web vypadá takhle:
Content-Security-Policy: default-src 'self'; img-src 'self' data:;
style-src 'self' 'unsafe-inline'; script-src 'self';
frame-ancestors 'none'; base-uri 'self'; object-src 'none'frame-brání vložení vašeho webu do cizího rámu (nahrazuje staršíancestors 'none' X-).Frame- Options 'unsafe-u skriptů je největší past. S ním CSP proti vloženému kódu prakticky nechrání, a přitom je to nejjednodušší způsob, jak politiku „zprovoznit“. Když ho potřebujete, je to signál, že se inline skripty mají přesunout do souborů.inline' - Vyjmenujte i to, co načítáte z cizích domén: mapy, písma, přehrávače, analytiku. Na tohle se zapomíná nejčastěji a projeví se to až v produkci.
- Direktiva
upgrade-navíc automaticky povýšíinsecure- requests httpodkazy nahttps; souvisí seSEO-13.
A pokud usoudíte, že se do toho pouštět nebudete, je to legitimní rozhodnutí. Nález je informativní přesně proto, že s ním počítáme.
Co o tom říká report
Popis nálezu
Homepage neposílá hlavičku `Content-
Doporučení
Zvažte zavedení `Content-
Zdroje
- MDN: Content-Security-Policy (ověřeno 2026-09-12)
Text ověřen 2026-09-12