Utilia

CSP generator (Content Security Policy)

Izradi Content-Security-Policy zaglavlje, meta oznaku i Report-Only inačicu s predlošcima, nonceovima i SHA-256 hashevima te provjeri postojeću politiku.

Kreni od predloška

Googleovi hostovi primjeri su iz Googleovih smjernica za CSP uz Google oznaku. Google ih povremeno mijenja: provjeri aktualnu dokumentaciju i ukloni ono što ne koristiš.

Direktive

Izvori odvojeni razmakom. Ostavi polje prazno da izostaviš direktivu (direktive dohvaćanja tada se vraćaju na default-src).

Brzo dodavanje

Nonce mora biti nova nasumična vrijednost uz svaki odgovor, koju generira tvoj poslužitelj i ponavlja u svakom <script nonce="…">. Fiksni nonce ne štiti ništa.

Izračunaj hash ugrađene skripte ili stila

Hash obuhvaća točan tekst između oznaka, uključujući razmake i prijelome redaka: svaka promjena traži novi hash. Ugrađeni rukovatelji događaja (onclick=…) trebaju i 'unsafe-hashes'.

Izvješća o povredama

Dodaje report-uri (stariji preglednici) i report-to sa zaglavljem Reporting-Endpoints.

U <meta> oznaci preglednici ignoriraju frame-ancestors, report-uri, report-to i sandbox, a Report-Only nije podržan. Stavi oznaku na vrh <head>: vrijedi samo za sadržaj koji dolazi nakon nje.

Pregled ove politike

Procijeni postojeću politiku

Kako izraditi politiku

  1. Pod Kreni od predloška odaberi početnu točku: Strogo (nonce + strict-dynamic), Zaključana statična stranica, Uobičajena web-stranica ili Uobičajena + Google Analytics / Ads. Uređivač se otvara s predloškom uobičajene web-stranice.
  2. Prilagodi Direktive. Svako polje prima izvore odvojene razmakom; prazno polje izostavlja direktivu.
  3. Pomoću Brzo dodavanje dodaj ključnu riječ u odabranu Direktiva: 'self', 'none', 'unsafe-inline', 'strict-dynamic', https:, data:… Dodaj nonce umeće nasumični 128-bitni nonce.
  4. Da dopustiš određenu ugrađenu skriptu bez 'unsafe-inline', zalijepi je (ili HTML oko nje) u Izračunaj hash ugrađene skripte ili stila i klikni Izračunaj SHA-256 i dodaj.
  5. Označi upgrade-insecure-requests ako neki stari URL-ovi još koriste http:// i po želji upiši URL krajnje točke za izvješća (neobavezno).
  6. Kopiraj HTTP zaglavlje, Zaglavlje Report-Only (testiranje bez blokiranja) ili HTML oznaka. Pregled ove politike ažurira se dok upisuješ.

Ako želiš provjeriti politiku koju već imaš, zalijepi je pod Procijeni postojeću politiku i klikni Procijeni politiku; Učitaj u uređivač kopira je u polja.

Alat radi u tvom pregledniku. Ništa što upišeš ne šalje se na poslužitelj.

Što radi Content Security Policy

CSP govori pregledniku s kojih izvora (origin) stranica smije učitavati skripte, stilove, slike, fontove, okvire i veze. Glavna mu je zadaća ograničiti cross-site scripting (XSS): čak i ako napadač ubaci oznake u tvoju stranicu, dobra politika sprječava izvršavanje ubačene skripte. Također određuje tko smije ugraditi tvoju stranicu u okvir (frame-ancestors), kamo se obrasci smiju slati (form-action) i na što smije pokazivati <base> (base-uri).

Direktive dohvaćanja kao što su img-src ili font-src vraćaju se na default-src kad ih nema. base-uri, form-action i frame-ancestors nemaju takvu zamjenu, zato ih pregled izričito traži.

Nonceovi, hashevi i strict-dynamic

Dopuštanje hostova (script-src https://cdn.example.com) djeluje sigurno, ali se često može zaobići: velike domene poslužuju JSONP krajnje točke i stare biblioteke koje napadač može iskoristiti. Pristup koji preporučuju sigurnosni timovi preglednika je stroga CSP: svaki legitimni <script> nosi nonce koji poslužitelj generira za svaki odgovor ili je dopušten svojim hashem, a 'strict-dynamic' omogućuje tim pouzdanim skriptama da učitaju skripte koje trebaju. U takvoj postavci https: i 'unsafe-inline' samo su zamjena za vrlo stare preglednike; moderni ih ignoriraju.

Nonce radi samo ako se mijenja uz svaki odgovor i ako je nepredvidiv. Onaj koji umeće Dodaj nonce samo je primjer: tvoj poslužitelj ili framework mora generirati vlastiti. Hash obuhvaća točne bajtove ugrađenog kôda pa preoblikovanje skripte traži novi hash.

Zaglavlje, Report-Only i meta oznaka

Politiku, kad god možeš, šalji kao HTTP zaglavlje odgovora. Najprije je uvedi kao Content-Security-Policy-Report-Only: preglednici prijavljuju povrede (u konzolu i na tvoju krajnju točku, ako ih postaviš) ne blokirajući ništa, pa možeš popraviti stranice prije primjene politike. Postavke izvješća dodaju report-uri za starije preglednike i report-to sa zaglavljem Reporting-Endpoints.

Inačica <meta http-equiv> praktična je na statičnom hostingu, ali preglednici u njoj ignoriraju frame-ancestors, report-uri, report-to i sandbox, a Report-Only meta oznaka ne postoji. Alat te direktive uklanja iz oznake i javlja ti to.

Česta pitanja

Je li 'unsafe-inline' u style-src problem?

Manje je opasan nego u script-src i vrlo je čest jer mnoge biblioteke postavljaju ugrađene stilove. Ubačeni CSS ipak može unakaziti stranicu ili odati podatke, pa ga pregled navodi kao nisku ozbiljnost.

Jesu li Google Analytics hostovi potpuni?

To su primjeri iz Googleovih smjernica za CSP uz Google oznaku. Google ih s vremenom prilagođava, a mogu zatrebati i regionalne domene; provjeri aktualnu Googleovu dokumentaciju i ukloni ono što ne koristiš. Ugrađeni isječak gtag.js također traži nonce ili hash.

Zašto moja politika blokira moje vlastite ugrađene skripte?

Čim se postavi script-src bez 'unsafe-inline', blokira se svaki ugrađeni <script> i atribut onclick=. Premjesti kôd u datoteku ili dodaj nonce ili hash.

Zamjenjuje li CSP escapiranje korisničkog unosa?

Ne. CSP je druga crta obrane. Nastavi escapirati izlaz i validirati 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 procjenu zalijepi jednu po jednu politiku.