CSP generator
Izradi Content-Security-Policy zaglavlje, meta oznaku i Report-Only verziju uz predloške, nonce i SHA-256 hasheve te provjeri postojeću politiku.
Počni od predloška
Google hostovi su primjeri iz Googleovih CSP smjernica za Google tag. Google ih s vremena na vrijeme mijenja: provjeri aktuelnu dokumentaciju i ukloni ono što ne koristiš.
U <meta> oznaci preglednici zanemaruju frame-ancestors, report-uri, report-to i sandbox, a Report-Only nije podržan. Stavi oznaku na sam početak <head>: važi samo za sadržaj koji dolazi poslije nje.
Pregled ove politike
Ove provjere nisu pronašle nikakve slabosti.
Procijeni postojeću politiku
Kako izraditi politiku
- Odaberi početnu tačku pod Počni od predloška: Strogi (nonce + strict-dynamic), Zaključani statični sajt, Tipičan web-sajt ili Tipičan + Google Analytics / Ads. Uređivač se otvara s predloškom tipičnog web-sajta.
- Podesi Direktive. Svako polje prima izvore odvojene razmakom; prazno polje izostavlja direktivu.
- Pomoću Brzo dodavanje dodaj ključnu riječ u odabranu Direktiva:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Dodaj nonce ubacuje slučajni 128-bitni nonce. - Da dozvoliš određenu inline skriptu bez
'unsafe-inline', zalijepi je (ili HTML oko nje) u Izračunaj hash inline skripte ili stila i klikni Izračunaj SHA-256 i dodaj. - Označi upgrade-insecure-requests ako neki stari URL-ovi još koriste
http://, a po želji upiši URL krajnje tačke za izvještaje (neobavezno). - Kopiraj HTTP zaglavlje, Report-Only zaglavlje (testiranje bez blokiranja) ili HTML oznaku. Pregled ove politike se osvježava dok kucaš.
Da provjeriš politiku koju već imaš, zalijepi je pod Procijeni postojeću politiku i klikni Procijeni politiku; Učitaj u uređivač je kopira u polja.
Sve radi u tvom pregledniku. Ništa što upišeš ne šalje se na server.
Šta radi Content Security Policy
CSP govori pregledniku s kojih izvora stranica smije učitavati skripte, stilove, slike, fontove, okvire i veze. Glavna svrha mu je ograničavanje cross-site scriptinga (XSS): čak i ako napadač ubaci markup u tvoju stranicu, dobra politika sprečava izvršavanje ubačene skripte. Takođe kontroliše ko smije ugraditi tvoju stranicu (frame-ancestors), kamo se obrasci mogu slati (form-action) i na šta <base> smije pokazivati (base-uri).
Fetch direktive kao što su img-src ili font-src vraćaju se na default-src kad nedostaju. base-uri, form-action i frame-ancestors se ne vraćaju na njega, zbog čega ih pregled izričito traži.
Nonce, hashevi i strict-dynamic
Dozvoljavanje hostova (script-src https://cdn.example.com) djeluje sigurno, ali se često može zaobići: veliki domeni hostuju JSONP krajnje tačke i stare biblioteke koje napadač može iskoristiti. Pristup koji preporučuju sigurnosni timovi preglednika je strogi CSP: svaki legitimni <script> nosi nonce koji server generiše za svaki odgovor ili je dozvoljen svojim hashom, a 'strict-dynamic' omogućava tim pouzdanim skriptama da učitaju skripte koje trebaju. U takvoj postavci https: i 'unsafe-inline' služe samo kao rezerva za veoma stare preglednike; moderni ih zanemaruju.
Nonce radi samo ako se mijenja u svakom odgovoru i ako je nepredvidiv. Onaj koji ubacuje Dodaj nonce je samo primjer: tvoj server ili framework mora generisati vlastiti. Hash obuhvata tačne bajtove inline koda, pa promjena formatiranja skripte traži novi hash.
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: preglednici prijavljuju kršenja (u konzolu i na tvoju krajnju tačku ako si je postavio) ne blokirajući ništa, pa možeš popraviti stranice prije nego što počneš primjenjivati politiku. Postavke izvještavanja dodaju report-uri za starije preglednike i report-to sa zaglavljem Reporting-Endpoints.
Verzija <meta http-equiv> je zgodna na statičnom hostingu, ali preglednici u njoj zanemaruju frame-ancestors, report-uri, report-to i sandbox, a Report-Only meta oznaka ne postoji. Alat te direktive uklanja iz oznake i to navodi.
Česta pitanja
Je li '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 unakaziti stranicu ili otkriti podatke, pa ga pregled navodi kao nisku ozbiljnost.
Jesu li Google Analytics hostovi potpuni?
To su primjeri iz Googleovih CSP smjernica za Google tag. Google ih s vremenom prilagođava, a mogu zatrebati i regionalni domeni; provjeri Googleovu aktuelnu dokumentaciju i ukloni ono što ne koristiš. Inline isječak gtag.js također traži nonce ili hash.
Zašto moja politika blokira moje vlastite inline skripte?
Čim se script-src postavi bez 'unsafe-inline', blokira se svaki inline <script> i atribut onclick=. Premjesti kod u datoteku ili dodaj nonce ili hash.
Zamjenjuje li CSP escapovanje korisničkog unosa?
Ne. CSP je druga linija odbrane. I dalje escapuj izlaz i provjeravaj unos; politika ograničava štetu kad nešto promakne.
Mogu li imati više politika?
Da: ako stranica primi više CSP zaglavlja, resurs mora zadovoljiti sve. U evaluator lijepi jednu po jednu politiku.
Srodni alati
- .htaccess generator preusmjeravanja Generiši 301 i 302 preusmjeravanja za .htaccess ili Nginx, nametni HTTPS i www, premjesti domenu i riješi kosu crtu na kraju, uz provjeru petlji i lanaca.
- Generator meta oznaka Besplatan generator meta oznaka za naslov, meta opis, kanonski URL, robots i viewport, s provjerom dužine i ispravno escapovanim HTML-om.
- Generator hasheva Generiši MD5, SHA-1, SHA-256 i SHA-512 heševe teksta ili datoteka bilo koje veličine i provjeri kontrolne zbirove. Sve radi u tvom pregledniku.
- Robots.txt generator Napravi ispravnu datoteku robots.txt s grupama user agenata, pravilima Allow i Disallow, sitemapima i crawl-delay, uz provjeru čestih grešaka.