Generátor CSP (Content Security Policy)
Vytvor hlavičku Content-Security-Policy, značku meta aj verziu Report-Only s predvoľbami, nonce a hashmi SHA-256 a skontroluj existujúcu politiku.
Začni predvoľbou
Hostitelia Google sú príklady z odporúčaní Google k CSP pre značku Google. Google ich občas mení: skontroluj aktuálnu dokumentáciu a odstráň, čo nepoužívaš.
V značke <meta> prehliadače ignorujú frame-ancestors, report-uri, report-to a sandbox a Report-Only nie je podporovaný. Daj značku na začiatok <head>: platí len pre obsah, ktorý nasleduje za ňou.
Posúdenie tejto politiky
Tieto kontroly nenašli žiadne slabiny.
Vyhodnotiť existujúcu politiku
Ako vytvoriť politiku
- Vyber východiskový bod v časti Začni predvoľbou: Prísna (nonce + strict-dynamic), Uzamknutý statický web, Typický web alebo Typický web + Google Analytics / Ads. Editor sa otvorí s predvoľbou typického webu.
- Uprav Direktívy. Každé pole prijíma zdroje oddelené medzerou; prázdne pole direktívu vynechá.
- Cez Rýchle pridanie pripoj kľúčové slovo k vybranej Direktíve:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Pridať nonce vloží náhodný 128-bitový nonce. - Ak chceš povoliť konkrétny vložený skript bez
'unsafe-inline', vlož ho (alebo HTML okolo neho) do poľa Hash vloženého skriptu alebo štýlu a klikni na Vypočítať SHA-256 a pridať. - Zaškrtni upgrade-insecure-requests, ak niektoré staré URL stále používajú
http://, a voliteľne zadaj URL koncového bodu pre hlásenia (voliteľné). - Skopíruj HTTP hlavičku, Hlavičku Report-Only (test bez blokovania) alebo HTML značku . Posúdenie tejto politiky sa aktualizuje počas písania.
Ak chceš skontrolovať politiku, ktorú už máš, vlož ju do časti Vyhodnotiť existujúcu politiku a klikni na Vyhodnotiť politiku; Načítať do editora ju skopíruje do polí.
Všetko beží vo tvojom prehliadači. Nič, čo zadáš, sa neodosiela na server.
Čo robí Content Security Policy
CSP hovorí prehliadaču, z ktorých pôvodov smie stránka načítavať skripty, štýly, obrázky, písma, rámce a spojenia. Jej hlavnou úlohou je obmedziť cross-site scripting (XSS): aj keď útočník do tvojej stránky vloží kód, dobrá politika zabráni spusteniu vloženého skriptu. Ovláda tiež, kto môže tvoju stránku vkladať do rámca (frame-ancestors), kam sa smú odosielať formuláre (form-action) a na čo môže ukazovať <base> (base-uri).
Direktívy typu fetch, napríklad img-src alebo font-src, sa pri absencii vracajú k default-src. base-uri, form-action a frame-ancestors sa k nemu nevracajú, preto ich posúdenie žiada výslovne.
Nonce, hashe a strict-dynamic
Povolenie hostiteľov (script-src https://cdn.example.com) vyzerá bezpečne, ale často sa dá obísť: veľké domény hostia koncové body JSONP a staré knižnice, ktoré môže útočník zneužiť. Prístup odporúčaný bezpečnostnými tímami prehliadačov je prísna CSP: každý legitímny <script> nesie nonce, ktorý server vygeneroval pre danú odpoveď, alebo je povolený podľa hashu, a 'strict-dynamic' týmto dôveryhodným skriptom dovolí načítať skripty, ktoré potrebujú. V takom nastavení sú https: a 'unsafe-inline' len zálohou pre veľmi staré prehliadače; moderné ich ignorujú.
Nonce funguje, len ak sa mení pri každej odpovedi a nedá sa uhádnuť. Ten, ktorý vloží Pridať nonce, je len ukážka: tvoj server alebo framework si musí vygenerovať vlastný. Hash pokrýva presné bajty vloženého kódu, takže po preformátovaní skriptu treba nový hash.
Hlavička, Report-Only a značka meta
Politiku posielaj ako HTTP hlavičku odpovede všade, kde to ide. Najprv ju nasaď ako Content-Security-Policy-Report-Only: prehliadače hlásia porušenia (do konzoly a na tvoj koncový bod, ak si ho nastavil) bez toho, aby niečo blokovali, takže stránky môžeš opraviť ešte pred vynucovaním. Nastavenia hlásení pridávajú report-uri pre staršie prehliadače a report-to s hlavičkou Reporting-Endpoints.
Verzia <meta http-equiv> sa hodí na statický hosting, ale prehliadače v nej ignorujú frame-ancestors, report-uri, report-to a sandbox a značka meta pre Report-Only neexistuje. Nástroj tieto direktívy zo značky odstráni a upozorní na to.
Ako čítať posúdenie
Posúdenie prechádza politiku a zoraďuje nálezy podľa závažnosti: Vysoká, Stredná, Nízka a Info. Hľadá preklepy v názvoch direktív, nezabalené kľúčové slová, duplicitné direktívy, zástupné znaky, schémy ako data: v script-src, chýbajúce object-src, base-uri a frame-ancestors a spoliehanie sa na zoznam hostiteľov. Je to automatická kontrola podľa známych pravidiel, nie záruka bezpečnosti: politiku vždy otestuj na skutočnej stránke, najlepšie najprv v režime Report-Only.
Často kladené otázky
Je 'unsafe-inline' v style-src problém?
Je menej nebezpečné ako v script-src a je veľmi bežné, pretože veľa knižníc nastavuje vložené štýly. Vložené CSS môže stránku stále znehodnotiť alebo vyzradiť údaje, preto ho posúdenie uvádza s nízkou závažnosťou.
Sú hostitelia Google Analytics úplní?
Sú to príklady z odporúčaní Google k CSP pre značku Google. Google ich časom upravuje a môžu byť potrebné regionálne domény; skontroluj aktuálnu dokumentáciu Google a odstráň, čo nepoužívaš. Vložený úryvok gtag.js tiež potrebuje nonce alebo hash.
Prečo moja politika blokuje moje vlastné vložené skripty?
Keď je script-src nastavené bez 'unsafe-inline', zablokuje sa každý vložený <script> aj atribút onclick=. Presuň kód do súboru alebo pridaj nonce či hash.
Nahrádza CSP ošetrovanie vstupu od používateľov?
Nie. CSP je druhá línia obrany. Naďalej ošetruj výstup a overuj vstup; politika obmedzí škody, keď niečo prejde.
Môžem mať viac politík?
Áno: ak stránka dostane viac hlavičiek CSP, zdroj musí vyhovovať všetkým. Do vyhodnocovača vkladaj vždy jednu politiku.
Súvisiace nástroje
- Generátor presmerovaní .htaccess Vygeneruj presmerovania 301 a 302 pre .htaccess alebo Nginx, vynúť HTTPS a www, presuň doménu a oprav lomky na konci, s kontrolou cyklov a reťazí.
- Generátor meta tagov Bezplatný generátor meta tagov pre titulok, meta popis, kanonickú URL, robots a viewport s kontrolou dĺžky a správne ošetreným HTML kódom.
- Generátor hashov MD5, SHA-1, SHA-256 Vygeneruj hashe MD5, SHA-1, SHA-256 a SHA-512 textu alebo súborov ľubovoľnej veľkosti a over kontrolné súčty. Všetko beží v tvojom prehliadači.
- Generátor robots.txt Vytvor platný súbor robots.txt so skupinami user agentov, pravidlami Allow a Disallow, sitemap a crawl-delay a s kontrolou najčastejších chýb.