Utilia

Generator CSP (Content Security Policy)

Ustvari glavo Content-Security-Policy, oznako meta in različico Report-Only s predlogami, nonce in zgoščenimi vrednostmi SHA-256 ter preveri obstoječo politiko.

Začni s predlogo

Gostitelji Googla so primeri iz Googlovih smernic CSP za oznako Google. Google jih občasno spremeni: preveri trenutno dokumentacijo in odstrani, česar ne uporabljaš.

Direktive

Viri, ločeni s presledki. Prazno polje direktivo izpusti (direktive za pridobivanje virov se nato zatečejo k default-src).

Hitro dodajanje

Nonce mora biti ob vsakem odgovoru nova naključna vrednost, ki jo ustvari tvoj strežnik in jo ponovi v vsakem <script nonce="…">. Stalen nonce ne ščiti ničesar.

Izračunaj zgoščeno vrednost vrstične skripte ali sloga

Zgoščena vrednost zajema natančno besedilo med oznakama, vključno s presledki in prelomi vrstic: vsaka sprememba zahteva novo zgoščeno vrednost. Vrstični obravnavalniki dogodkov (onclick=…) potrebujejo tudi 'unsafe-hashes'.

Poročila o kršitvah

Doda report-uri (starejši brskalniki) in report-to z glavo Reporting-Endpoints.

V oznaki <meta> brskalniki ne upoštevajo frame-ancestors, report-uri, report-to in sandbox, Report-Only pa ni podprt. Oznako postavi na začetek <head>: velja samo za vsebino za njo.

Pregled te politike

Oceni obstoječo politiko

Kako ustvariš politiko

  1. Pod Začni s predlogo izberi izhodišče: Stroga (nonce + strict-dynamic), Zaklenjeno statično spletno mesto, Običajno spletno mesto ali Običajno + Google Analytics / Ads. Urejevalnik se odpre s predlogo za običajno spletno mesto.
  2. Prilagodi Direktive. V vsako polje vpiši vire, ločene s presledki; prazno polje direktivo izpusti.
  3. S Hitro dodajanje dodaš ključno besedo izbrani Direktiva: 'self', 'none', 'unsafe-inline', 'strict-dynamic', https:, data: … Dodaj nonce vstavi naključni 128-bitni nonce.
  4. Če želiš dovoliti določeno vrstično skripto brez 'unsafe-inline', jo prilepi (ali HTML okoli nje) v Izračunaj zgoščeno vrednost vrstične skripte ali sloga in klikni Izračunaj SHA-256 in dodaj.
  5. Označi upgrade-insecure-requests, če nekateri stari URL-ji še uporabljajo http://, po želji pa vpiši še URL končne točke za poročila (neobvezno).
  6. Kopiraj Glava HTTP, Glava Report-Only (preizkus brez blokiranja) ali Oznaka HTML . Pregled te politike se posodablja sproti, medtem ko tipkaš.

Če želiš preveriti politiko, ki jo že imaš, jo prilepi pod Oceni obstoječo politiko in klikni Oceni politiko; Naloži v urejevalnik jo prekopira v polja.

Orodje deluje v tvojem brskalniku. Nič, kar vneseš, se ne pošlje na strežnik.

Kaj počne Content Security Policy

CSP brskalniku pove, iz katerih izvorov (origin) sme stran nalagati skripte, sloge, slike, pisave, okvirje in povezave. Njegova glavna naloga je omejiti skriptno napadanje med spletnimi mesti (XSS): tudi če napadalec v tvojo stran vbrizga oznake, dobra politika prepreči izvedbo vbrizgane skripte. Nadzoruje tudi, kdo sme tvojo stran vdelati v okvir (frame-ancestors), kam se smejo pošiljati obrazci (form-action) in na kaj sme kazati <base> (base-uri).

Direktive za pridobivanje virov, kot sta img-src ali font-src, se ob odsotnosti zatečejo k default-src. base-uri, form-action in frame-ancestors te nadomestne vrednosti nimajo, zato jih pregled izrecno zahteva.

Nonce, zgoščene vrednosti in strict-dynamic

Dovoljevanje gostiteljev (script-src https://cdn.example.com) je videti varno, a ga je pogosto mogoče zaobiti: velike domene gostijo končne točke JSONP in stare knjižnice, ki jih lahko napadalec ponovno uporabi. Pristop, ki ga priporočajo varnostne ekipe brskalnikov, je stroga CSP: vsaka zakonita oznaka <script> nosi nonce, ki ga strežnik ustvari za vsak odgovor, ali pa je dovoljena prek zgoščene vrednosti, 'strict-dynamic' pa tem zaupanja vrednim skriptam omogoči nalaganje skript, ki jih potrebujejo. Pri takšni zasnovi sta https: in 'unsafe-inline' le nadomestni rešitvi za zelo stare brskalnike; sodobni ju prezrejo.

Nonce deluje le, če se spremeni ob vsakem odgovoru in je nepredvidljiv. Tisti, ki ga vstavi Dodaj nonce, je zgolj primer: tvoj strežnik ali ogrodje mora ustvariti svojega. Zgoščena vrednost zajema natančne bajte vrstične kode, zato je ob vsakem preoblikovanju skripte potrebna nova.

Glava, Report-Only in oznaka meta

Politiko pošiljaj kot glavo odgovora HTTP, kadar je le mogoče. Najprej jo uvedi kot Content-Security-Policy-Report-Only: brskalniki prijavijo kršitve (v konzolo in na tvojo končno točko, če si jo nastavil), ne da bi karkoli blokirali, tako da lahko strani popraviš, preden politiko uveljaviš. Nastavitve poročanja dodajo report-uri za starejše brskalnike in report-to z glavo Reporting-Endpoints.

Različica <meta http-equiv> je priročna na statičnem gostovanju, vendar brskalniki v njej ne upoštevajo frame-ancestors, report-uri, report-to in sandbox, oznake meta za Report-Only pa ni. Orodje te direktive iz oznake odstrani in to tudi sporoči.

Pregled politike

Pregled označi pogoste težave in jim dodeli resnost od Visoka do Informacija: manjkajoči script-src ali object-src, 'unsafe-inline' in 'unsafe-eval', nadomestni znaki, celotne sheme, kot je https:, navadni viri http://, dvojniki, napačno napisane direktive in ključne besede brez enojnih narekovajev. Pregled je pomoč pri odločanju, ne pa zagotovilo: preveri jo na dejanskih straneh in jo preizkusi z Report-Only.

Pogosta vprašanja

Je 'unsafe-inline' v style-src težava?

Manj nevarna je kot v script-src in je zelo pogosta, ker številne knjižnice nastavljajo vrstične sloge. Vbrizgan CSS lahko še vedno popači stran ali razkrije podatke, zato ga pregled navede z nizko resnostjo.

So gostitelji Google Analytics popolni?

So primeri iz Googlovih smernic CSP za oznako Google. Google jih sčasoma prilagaja, potrebne pa so lahko tudi regionalne domene; preveri Googlovo trenutno dokumentacijo in odstrani, česar ne uporabljaš. Vrstični delček gtag.js potrebuje nonce ali zgoščeno vrednost.

Zakaj moja politika blokira moje lastne vrstične skripte?

Ko je script-src nastavljen brez 'unsafe-inline', je blokirana vsaka vrstična oznaka <script> in vsak atribut onclick=. Kodo premakni v datoteko ali dodaj nonce oziroma zgoščeno vrednost.

Ali CSP nadomesti ubežanje uporabniškega vnosa?

Ne. CSP je druga obrambna črta. Še naprej ubegaj izhodne podatke in preverjaj vnos; politika omeji škodo, kadar kaj uide.

Ali lahko imam več politik?

Da: če stran prejme več glav CSP, mora vir izpolnjevati vse. V ocenjevalnik prilepi vsakič eno politiko.