Generátor CSP (Content Security Policy)
Vytvoř hlavičku Content-Security-Policy, značku meta i verzi Report-Only s předvolbami, nonce a hashi SHA-256 a zkontroluj existující politiku.
Začít z předvolby
Hostitelé Googlu jsou příklady z doporučení Googlu k CSP pro značku Google. Google je čas od času mění: zkontroluj aktuální dokumentaci a odstraň to, co nepoužíváš.
V značce <meta> prohlížeče ignorují frame-ancestors, report-uri, report-to a sandbox a Report-Only není podporováno. Umísti značku na začátek <head>: platí jen pro obsah, který následuje za ní.
Kontrola této politiky
Tyto kontroly nenašly žádné slabiny.
Vyhodnotit existující politiku
Jak vytvořit politiku
- Pod Začít z předvolby vyber výchozí bod: Přísná (nonce + strict-dynamic), Uzamčený statický web, Typický web nebo Typický + Google Analytics / Ads. Editor se otevře s předvolbou typického webu.
- Uprav Direktivy. Každé pole přijímá zdroje oddělené mezerou; prázdné pole direktivu vynechá.
- Pomocí Rychlé přidání připojíš klíčové slovo k vybrané Direktiva:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Přidat nonce vloží náhodný 128bitový nonce. - Chceš-li povolit konkrétní vložený skript bez
'unsafe-inline', vlož ho (nebo okolní HTML) do pole Hash vloženého skriptu nebo stylu a klikni na Vypočítat SHA-256 a přidat. - Zaškrtni upgrade-insecure-requests, pokud některé staré adresy stále používají
http://, a podle potřeby zadej URL koncového bodu pro hlášení (volitelné). - Zkopíruj Hlavička HTTP, Hlavička Report-Only (test bez blokování) nebo Značka HTML . Kontrola této politiky se aktualizuje během psaní.
Pokud chceš zkontrolovat politiku, kterou už máš, vlož ji pod Vyhodnotit existující politiku a klikni na Vyhodnotit politiku; tlačítko Načíst do editoru ji zkopíruje do polí. Vše běží lokálně ve tvém prohlížeči a nic, co zadáš, se neodesílá na server.
K čemu je Content Security Policy
CSP říká prohlížeči, z jakých původů smí stránka načítat skripty, styly, obrázky, písma, rámce a spojení. Jejím hlavním úkolem je omezit cross-site scripting (XSS): i když útočník do tvé stránky vloží značky, dobrá politika zabrání spuštění vloženého skriptu. Řídí také to, kdo smí tvou stránku vložit do rámce (frame-ancestors), kam lze odesílat formuláře (form-action) a na co může odkazovat <base> (base-uri).
Direktivy typu fetch, například img-src nebo font-src, se při absenci řídí direktivou default-src. Direktivy base-uri, form-action a frame-ancestors takovou zálohu nemají, a proto je kontrola výslovně požaduje.
Nonce, hashe a strict-dynamic
Povolování hostitelů (script-src https://cdn.example.com) vypadá bezpečně, ale často jde obejít: velké domény hostují koncové body JSONP a staré knihovny, které může útočník zneužít. Postup doporučovaný bezpečnostními týmy prohlížečů se nazývá přísná CSP: každý legitimní <script> nese nonce, který server vygeneruje pro každou odpověď, nebo je povolen svým hashem a 'strict-dynamic' dovolí těmto důvěryhodným skriptům načíst skripty, které potřebují. V takovém nastavení jsou https: a 'unsafe-inline' jen zálohou pro velmi staré prohlížeče; moderní je ignorují.
Nonce funguje, jen pokud se mění při každé odpovědi a nelze ho předvídat. Ten, který vloží Přidat nonce, je pouhý příklad: tvůj server nebo framework si musí vygenerovat vlastní. Hash pokrývá přesné bajty vloženého kódu, takže po přeformátování skriptu je potřeba nový hash.
Hlavička, Report-Only a značka meta
Politiku posílej jako hlavičku odpovědi HTTP, kdykoli to jde. Nejprve ji nasaď jako Content-Security-Policy-Report-Only: prohlížeče hlásí porušení (do konzole a na tvůj koncový bod, pokud jsi ho nastavil), ale nic neblokují, takže můžeš stránky opravit dřív, než politiku začneš vynucovat. Nastavení hlášení přidává report-uri pro starší prohlížeče a report-to s hlavičkou Reporting-Endpoints.
Verze <meta http-equiv> se hodí na statickém hostingu, jenže prohlížeče v ní ignorují frame-ancestors, report-uri, report-to a sandbox a značka meta pro Report-Only neexistuje. Nástroj tyto direktivy ze značky odstraní a upozorní na to.
Časté dotazy
Je 'unsafe-inline' ve style-src problém?
Je méně nebezpečné než ve script-src a je velmi běžné, protože mnoho knihoven nastavuje vložené styly. Vložené CSS však může stránku poškodit nebo vynášet data, a proto to kontrola uvádí s nízkou závažností.
Jsou hostitelé pro Google Analytics úplní?
Jsou to příklady z doporučení Googlu k CSP pro značku Google. Google je časem upravuje a mohou být potřeba i regionální domény; zkontroluj aktuální dokumentaci Googlu a odstraň to, co nepoužíváš. Vložený úryvek gtag.js také potřebuje nonce nebo hash.
Proč moje politika blokuje mé vlastní vložené skripty?
Jakmile je nastaven script-src bez 'unsafe-inline', je zablokován každý vložený <script> i atribut onclick=. Přesuň kód do souboru nebo přidej nonce či hash.
Nahrazuje CSP escapování uživatelského vstupu?
Ne. CSP je druhá linie obrany. Výstup dál escapuj a vstup validuj; politika omezí škody, když se něco přece jen protlačí.
Mohu mít několik politik najednou?
Ano: pokud stránka dostane několik hlaviček CSP, zdroj musí vyhovět všem. Do vyhodnocení vkládej vždy jednu politiku.
Související nástroje
- Generátor přesměrování .htaccess Vygeneruj přesměrování 301 a 302 pro .htaccess nebo Nginx, vynuť HTTPS a www, přesuň doménu a uprav lomítka s kontrolou smyček a řetězců.
- Generátor meta tagů Bezplatný generátor meta tagů pro titulek, meta description, kanonickou URL, robots a viewport s kontrolou délky a správně escapovaným HTML.
- Generátor hashů Vytvoř hash MD5, SHA-1, SHA-256 a SHA-512 z textu nebo souborů libovolné velikosti a ověř kontrolní součty. Vše běží ve tvém prohlížeči.
- Generátor robots.txt Vytvoř platný soubor robots.txt se skupinami user-agentů, pravidly Allow a Disallow, mapami webu a crawl-delay a s kontrolou běžných chyb.