Defaults.Exposed

Defaults.ExposedPopravki › Content-Security-Policy (CSP)

Kako popraviti Content-Security-Policy (CSP)

Politika varnosti vsebine je varnostno pravilo, ki ga vaša spletna stran preda brskalniku vsakega obiskovalca in mu pove, katera koda sme teči. Brez nje, če na stran kdaj pristane karkoli zlonamernega — prek polja za komentarje, vdrtega vtičnika ali skripte tretje osebe — bo brskalnik to svobodno zagnal, vključno s kodo, ki tiho skimira številke kartic in gesla vaših strank, medtem ko se ključavnica še vedno prikazuje.

Bistvo za vaše podjetje: Če je vaša stran kdaj prilagojena, zlonamerna koda bere podrobnosti plačilnih kartic in prijavne podatke vaših strank neposredno z vaše blagajne, medtem ko je vse videti popolnoma normalno — kar vam pusti s povratnimi terjatvami, zahtevki za goljufijo, prijavljeno kršitvijo podatkov in neuspešnim preverjanjem, ki ga varnostne ekipe večjih naročnikov uporabijo za zaustavitev ali uničenje posla.

Kaj vas to lahko stane

Zakaj je to pomembno. Ključavnica dokazuje, da je povezava z vašo stranjo zasebna, a ne naredi ničesar za nadzor, katera koda teče, ko je obiskovalec na strani. Politika varnosti vsebine je zaščita, ki to naredi — brskalnikom naroči, naj ignorirajo katero koli skripto, ki ni prišla iz vira, ki mu zaupate, tako da en prilagojeno polje, oglas ali vtičnik ne more postati orodje za krajo denarja in podatkov vaših strank. Je ocenjevano preverjanje na vašem kartončku, vredno resnih točk, in eno od prvih stvari, ki jo profesionalni varnostni pregled išče.

Kaj to je v preprostem jeziku

Ko nekdo obišče vašo spletno stran, njihov brskalnik prenese vašo stran in zažene katero koli kodo na njej — skripte, ki spravljajo menije gor in dol, omogočajo gumbe, oddajajo plačilne obrazce in tako naprej. Privzeto brskalnik vsemu zaupa. Nima načina vedeti, katera koda je zares vaša in katera je bila vtihotapana s strani nekoga drugega.

Politika varnosti vsebine (pogosto skrajšana na CSP) je kratek seznam pravil, ki ga vaša spletna stran pripne vsaki strani in brskalniku pove: “Zaženi le kodo iz teh virov, ki sem jih odobril, in zavrni vse ostalo.” Je razlika med nočnim klubom, ki spusti kogar koli noter, in tistim s seznamom gostov na vratih.

Razlog, zakaj je to tako pomembno, je, da so spletne strani nenehno prilagajane — ne vedno z vdorom v vaš strežnik, a prek hrbtnih vrat, ki jih večina strani pusti odprte: polje za komentarje, iskalno polje, zastarel vtičnik, skripta tretje osebe za oglase ali analitiko ali widget za klepet. Če napadalec dobi celo eno vrstico lastne kode na eno od vaših strani, jo brskalnik zažene kot da bi bila vaša. Od tam prebere vse, kar stranke vtipkajo — številke kartic, gesla, naslove — in to tiho pošlje drugam. Politika varnosti vsebine zapre ta vrata z zavrnitvijo zagona česarkoli iz vira, ki ga niste odobrili.

Kaj vas to lahko stane

To ni abstraktno. Napad, ki ga politika varnosti vsebine preprečuje — koda, vtihotapana v stran, ki krade podatke od vaših lastnih strank — je za nekaterimi največjimi primeri skimiranja kartic v zgodovini. Kako se navadno odvija za normalno podjetje:

Kaj to dejansko je (podrobnost)

Politika varnosti vsebine se dostavi kot ena odgovornik glave HTTP — vrstica, ki jo vaš spletni strežnik pošlje z vsako stranjo. Njena vrednost je nabor direktiv, vsaka s tipom vsebine in dovoljenimi viri zanjo. Na primer:

Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self'

V preprostem jeziku: privzeto nalagaj stvari le z moje lastne strani; zaženi skripte le z moje lastne strani; ne dovoli starih vtičnikov; in ne dovolj drugim stranem, da me vdelajo v okvir.

Kako izgleda “dobro”. Naše preverjanje ne išče le prisotnosti glave — prebere politiko direktivo za direktivo in oceni, kako močna je dejansko, tako kot bi varnostni pregledovalec. Močna politika:

Kako to popraviti (brezplačno, ~1–2 uri)

Posredujte to vaši IT osebi ali tistemu, ki vodi vašo spletno stran — popravek sam je popolnoma brezplačen. Zaračunavamo le spremljanje, da ostane nameščen in pravilen sčasoma; vklop ne stane nič. Razlog, zakaj to traja uro ali dve namesto minut, je skrben preizkusni korak, ki prepreči, da bi po nesreči blokiral dele vaše lastne strani.

  1. Začnite v načinu samo za poročanje — še ne uveljavljajte. Dodajte glavo HTTP odziva Content-Security-Policy-Report-Only. To opazuje in beleži, kaj bi bilo blokirano brez dejanskega blokiranja česarkoli, tako da živa stran ostane delujoča, medtem ko se učite, od česa je vsaka stran dejansko odvisna. (Pomembno: samo za poročanje samo po sebi nudi obiskovalcem nič zaščite — je le varni prvi korak.)

  2. Zgradite politiko iz tega, kar vaša stran dejansko uporablja. Preglejte poročila, da najdete vsak legitimen vir skript, stilov, pisav in slik — vašo lastno domeno, vašo analitiko, vašega plačilnega ponudnika, gostitelja pisav, widget za klepet — in jih navedite kot dovoljene vire.

  3. Izogibajte se vrzelim, ki premagajo cel namen. Izogibajte se 'unsafe-inline' in 'unsafe-eval' za skripte in se izogibajte virom z nadomestnimi znaki, kot sta * in gole sheme, kot https: za skripte.

  4. Zaklenite uokvirjanje in vtičnike. Dodajte frame-ancestors 'self' in object-src 'none'.

  5. Preklopite iz samo za poročanje na uveljavljanje. Ko so poročila čista in stran deluje, spremenite ime glave iz Content-Security-Policy-Report-Only na Content-Security-Policy. To je korak, ki dejansko zagotavlja zaščito — politika samo za poročanje sama po sebi tega ne naredi in ne bo prestala preverjanja.

    Kjer nastavite glavo, je odvisno od vaše platforme:

    • Cloudflare: Pravila → Pravila preoblikovanja → Spremeni glavo odziva → nastavite Content-Security-Policy.
    • Nginx: add_header Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self';" always;
    • Apache: Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self';"
    • IIS (web.config): dodajte glavo HTTP odziva po meri, ki se imenuje Content-Security-Policy, z vrednostjo politike.
  6. Znova preverite svojo domeno, da potrdite, da je politika zdaj prikazana kot vklopljena in uveljavljana brez oslabljenih vrzeli.

Pogoste napake

Pogosta vprašanja

Nisem tehničen — ali se s tem ukvarjam sam?

Podrobnosti vam ni treba razumeti. To je nastavitev, ki jo doda tisti, ki vodi vašo spletno stran ali gostovanje, in na storitvah, kot je Cloudflare, je večinoma vodena. Posredujte jim razdelek 'Kako to popraviti' spodaj. Je brezplačno; edina previdnost je, da bi jo morali najprej uvesti v preizkusnemu načinu samo za opazovanje, da ne blokira po nesreči delov vaše lastne strani — kar je natanko to, kar koraki zajemajo.

Že imam ključavnico in SSL certifikat — ali ni moja stran varna?

Ključavnica zavaruje dostavo vaše strani; ne nadzira, kaj teče znotraj nje. Če zlonamerna koda kdaj konča na strani — prek vdrtega vtičnika, ogroženega oglasa ali vstavljenega polja — ključavnica tega ne bo preprečila pri kraji podatkov. Politika varnosti vsebine je plast, ki omejuje, kaj je sploh dovoljeno teči. Ščitita različne stvari in hočete oboje.

Ali bi vklop tega pokvaril mojo stran?

Lahko, če je vklopljeno agresivno naenkrat, ker morda blokira legitimne skripte, ki jih dejansko uporabljate. Zato je standardni pristop začeti v načinu 'samo za poročanje', ki opazuje brez blokiranja, popraviti vse, kar označi in šele nato uveljavljati. Narejenega na ta način je varno — in preizkusni korak je vgrajen v popravek spodaj.

Že smo jo nastavili v načinu 'samo za poročanje' — ali smo zaščiteni?

Ne, in to je najpogostejši lažen občutek varnosti. Način samo za poročanje opazuje in beleži, kaj bi bilo blokirano, a ne blokira ničesar — obiskovalci nimajo nobene realne zaščite. Je le varni prvi korak. Naše preverjanje dobi le majhen delček zasluge za samo za poročanje in ga ne bo zabeležilo kot uspeh. Zaščiteni ste le, ko preklopite na uveljavljeni način.

Ali to vpliva na naš oceno ali je le svetovalnega značaja?

Vpliva na vašo oceno. Preverjanje politike varnosti vsebine je ocenjevano in vredno do 25 točk v kategoriji Spletna varnost. Manjkajoča ali šibka politika je označena z visoko resnostjo in vlečt vašo oceno navzdol — in je natanko vrsta vrzeli, o kateri sprašuje varnostni vprašalnik naročnika.

Naš razvijalec je dodal politiko, a ocena je še vedno nizka — zakaj?

Politika lahko obstaja in je vseeno šibka. Najpogostejši krivci so vrzeli, kot sta 'unsafe-inline' in 'unsafe-eval' za skripte ali nadomestni znaki (*), ki znova odprejo natanko vrzel, ki jo je politika mišljena zapreti. Naše preverjanje prebere politiko direktivo za direktivo in oceni te šibkosti — politika, ki karkoli dovoli, dobi malo boljšo oceno kot nobena. Popravek je zaostritev pravil skript z nonce ali hash vrednostmi namesto teh vrzeli.