====== Content Security Policy (CSP) ====== **CSP** je bezpečnostní standard implementovaný v moderních webových prohlížečích. Umožňuje majitelům webových stránek deklarovat, které zdroje (např. skripty, styly, obrázky) jsou považovány za důvěryhodné a odkud se smí do prohlížeče načítat. Tím se drasticky snižuje možnost útočníka spustit na webu škodlivý kód, i kdyby se mu ho podařilo do stránky "podstrčit". ---- ====== Jak CSP funguje? ====== CSP funguje na principu "povolujících seznamů" (whitelisting). Server pošle prohlížeči v hlavičce HTTP odpovědi instrukce, které definují pravidla pro danou stránku. Pokud se prohlížeč pokusí načíst skript z adresy, která není na seznamu, zablokuje jej a nahlásí chybu v konzoli. ===== Příklad HTTP hlavičky: ===== Content-Security-Policy: default-src 'self'; img-src *; script-src trusted.com * **default-src 'self'**: Všechno se smí načítat pouze z vlastní domény. * **img-src ***: Obrázky se smí načítat odkudkoliv. * **script-src trusted.com**: Skripty se smí načítat pouze z domény ''trusted.com''. ---- ====== Proti čemu CSP chrání? ====== * **Cross-Site Scripting (XSS):** Zabraňuje spuštění vloženého skriptu (inline script), který útočník poslal v komentáři nebo URL parametru. * **Clickjacking:** Pomocí direktivy ''frame-ancestors'' určuje, zda a kde může být stránka vložena do rámce (iframe). * **Packet Sniffing:** Vynucuje šifrované spojení (HTTPS) pomocí direktivy ''upgrade-insecure-requests''. ---- ====== Hlavní direktivy CSP ====== ^ Direktiva ^ Význam ^ | **script-src** | Definuje povolené zdroje pro JavaScript. | | **style-src** | Definuje povolené zdroje pro CSS soubory. | | **img-src** | Definuje, odkud se smí stahovat obrázky. | | **connect-src** | Omezuje cíle, na které může web posílat data (např. přes Fetch nebo WebSocket). | | **frame-ancestors** | Určuje, které weby smí tuto stránku vložit do ''