CSP generator (Content Security Policy)
Napravi Content-Security-Policy zaglavlje, meta oznaku i Report-Only verziju sa šablonima, nonce vrednostima i SHA-256 heševima, pa proveri postojeću politiku.
Kreni od šablona
Google hostovi su primeri iz Google uputstva za CSP za Google tag. Google ih s vremena na vreme menja: proveri aktuelnu dokumentaciju i ukloni ono što ne koristiš.
U <meta> oznaci pregledači ignorišu frame-ancestors, report-uri, report-to i sandbox, a Report-Only nije podržan. Stavi oznaku na početak <head>: važi samo za sadržaj koji dolazi posle nje.
Pregled ove politike
Ove provere nisu pronašle slabosti.
Proceni postojeću politiku
Kako da napraviš politiku
- Pod Kreni od šablona izaberi polaznu tačku: Strogo (nonce + strict-dynamic), Zaključan statički sajt, Uobičajen veb-sajt ili Uobičajeno + Google Analytics / Ads. Uređivač se otvara sa šablonom uobičajenog veb-sajta.
- Prilagodi Direktive. Svako polje prima izvore razdvojene razmakom; prazno polje izostavlja direktivu.
- Pomoću Brzo dodavanje dodaj ključnu reč u izabranu Direktiva:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Dodaj nonce umeće slučajan 128-bitni nonce. - Da bi dozvolio određenu inline skriptu bez
'unsafe-inline', nalepi je (ili HTML oko nje) u Izračunaj heš inline skripte ili stila i klikni Izračunaj SHA-256 i dodaj. - Označi upgrade-insecure-requests (učitava http:// resurse preko https://) ako neki stari URL-ovi još koriste
http://, a po želji upiši i URL krajnje tačke za izveštaje (opciono). - Kopiraj HTTP zaglavlje, Report-Only zaglavlje (testiranje bez blokiranja) ili HTML oznaka. Pregled ove politike se ažurira dok kucaš.
Ako želiš da proveriš politiku koju već imaš, nalepi je pod Proceni postojeću politiku i klikni Proceni politiku; Učitaj u uređivač je kopira u polja.
Alat radi u tvom pregledaču. Ništa što upišeš ne šalje se na server.
Šta radi Content Security Policy
CSP govori pregledaču sa kojih izvora (origin) stranica sme da učitava skripte, stilove, slike, fontove, okvire i veze. Njegov glavni zadatak je da ograniči cross-site scripting (XSS): čak i ako napadač ubaci markup u tvoju stranicu, dobra politika sprečava izvršavanje ubačene skripte. Takođe određuje ko sme da ugradi tvoju stranicu u okvir (frame-ancestors), kuda se obrasci smeju slati (form-action) i na šta sme da pokazuje <base> (base-uri).
Fetch direktive kao što su img-src ili font-src vraćaju se na default-src kada ih nema. base-uri, form-action i frame-ancestors nemaju takvu rezervu, zbog čega ih pregled traži izričito.
Nonce, heš i strict-dynamic
Dozvoljavanje hostova (script-src https://cdn.example.com) deluje bezbedno, ali se često može zaobići: veliki domeni služe JSONP krajnje tačke i stare biblioteke koje napadač može da iskoristi. Pristup koji preporučuju timovi za bezbednost pregledača je stroga CSP politika: svaki legitiman <script> nosi nonce koji server generiše za svaki odgovor ili je dozvoljen svojim heš vrednošću, a 'strict-dynamic' dopušta tim pouzdanim skriptama da učitaju skripte koje su im potrebne. U takvoj postavci su https: i 'unsafe-inline' samo rezerva za veoma stare pregledače; moderni ih ignorišu.
Nonce radi samo ako se menja u svakom odgovoru i ako je nepredvidiv. Onaj koji ubacuje Dodaj nonce samo je primer: tvoj server ili framework mora da generiše sopstveni. Heš pokriva tačne bajtove inline koda, pa promena formatiranja skripte zahteva novi heš.
Zaglavlje, Report-Only i meta oznaka
Politiku šalji kao HTTP zaglavlje odgovora kad god možeš. Prvo je uvedi kao Content-Security-Policy-Report-Only: pregledači prijavljuju prekršaje (u konzolu, a ako si postavio krajnju tačku, i na nju) bez ikakvog blokiranja, pa možeš da popraviš stranice pre nego što počneš da je sprovodiš. Podešavanja izveštaja dodaju report-uri za starije pregledače i report-to sa Reporting-Endpoints zaglavljem.
Verzija sa <meta http-equiv> zgodna je na statičkom hostingu, ali pregledači u njoj ignorišu frame-ancestors, report-uri, report-to i sandbox, a Report-Only meta oznaka ne postoji. Alat te direktive uklanja iz oznake i to ti javlja.
Šta pregled proverava
Odeljak Pregled ove politike razvrstava nalaze po ozbiljnosti (Visoka, Srednja, Niska, Info). Traži prazne ili duple direktive, nepoznate nazive (verovatna greška u kucanju), ključne reči bez jednostrukih navodnika, 'unsafe-inline' i 'unsafe-eval' u script-src, džokere i cele šeme kao data:, običan http://, kao i nedostajuće object-src, base-uri, form-action i frame-ancestors. To je statička provera teksta politike: ne zna šta se stvarno učitava na tvojoj stranici, pa je isprobaj u Report-Only režimu pre nego što je sprovedeš.
Česta pitanja
Da li je 'unsafe-inline' u style-src problem?
Manje je opasan nego u script-src i veoma je čest, jer mnoge biblioteke postavljaju inline stilove. Ubačeni CSS ipak može da unakazi stranicu ili da odaje podatke, pa ga pregled navodi kao nisku ozbiljnost.
Da li je spisak Google Analytics hostova potpun?
To su primeri iz Google uputstva za CSP za Google tag. Google ih vremenom menja, a mogu biti potrebni i regionalni domeni; proveri aktuelnu Google dokumentaciju i ukloni ono što ne koristiš. Inline gtag.js isečak takođe zahteva nonce ili heš.
Zašto moja politika blokira moje inline skripte?
Čim se postavi script-src bez 'unsafe-inline', blokira se svaki inline <script> i svaki atribut onclick=. Prebaci kod u fajl ili dodaj nonce ili heš.
Da li CSP zamenjuje escapovanje korisničkog unosa?
Ne. CSP je druga linija odbrane. I dalje escapuj izlaz i proveravaj unos; politika ograničava štetu kada nešto promakne.
Mogu li da imam više politika?
Da: ako stranica dobije više CSP zaglavlja, resurs mora da zadovolji sve. U procenjivač lepi jednu po jednu politiku.
Srodni alati
- .htaccess generator preusmeravanja Generiši 301 i 302 preusmeravanja za .htaccess ili Nginx, nametni HTTPS i www, premesti domen i popravi kose crte, uz proveru petlji i lanaca.
- Meta tag generator Besplatan generator meta tagova za naslov, meta opis, kanonski URL, robots i viewport, sa proverom dužine i ispravno escapovanim HTML-om.
- Generator heševa (MD5, SHA-256) Generiši MD5, SHA-1, SHA-256 i SHA-512 heševe teksta ili fajlova bilo koje veličine i proveri kontrolne sume. Sve radi u tvom pregledaču.
- Robots.txt generator Napravi ispravan robots.txt fajl sa grupama user agenata, Allow i Disallow pravilima, sitemapovima i crawl-delay, uz proveru čestih grešaka.