Content Security Policy i vaš CMP: kako da CSP i privola rade zajedno

Dva sigurnosna sloja koja se moraju slagati

Content Security Policy (CSP) govori pregledniku iz kojih izvora stranica smije učitavati skripte, stilove, slike, okvire i mrežne zahtjeve. Platforma za upravljanje privolom radi suprotan posao: odlučuje koje od tih skripti smiju raditi na temelju odabira korisnika. Kad se to dvoje konfigurira odvojeno, sudaraju se. CMP se ne učita jer ga CSP blokira, ili se CSP toliko opusti da bi prihvatio CMP i oglasne tagove da više ništa ne štiti.

Ovaj vodič objašnjava koje CSP direktive CMP obično treba, kako nonceovi djeluju s umetanjem skripti i kako uvesti promjene a da se banner ne pokvari.

Što CMP obično traži od CSP-a

Točni zahtjevi ovise o dobavljaču, pa uvijek krenite od dokumentacije svog CMP-a. Općenito, provjerite ove direktive:

Na TCF web-mjestima imajte na umu da CMP na stranici stvara i okvir lokator imena __tcfapiLocator. Taj se okvir stvara bez udaljenog izvora pa obično ne treba unos u frame-src, ali vrijedi to potvrditi u testiranju.

Problem inline stuba

Većina CMP-ova traži da u head stranice postavite malu inline skriptu — stub — kako bi druge skripte mogle stavljati pozive u red prije nego što se učita glavni CMP. Stroga CSP blokira inline skripte osim ako ih izričito ne dopustite. Imate tri mogućnosti:

  1. Nonce. Generirajte slučajnu vrijednost po odgovoru, dodajte je u CSP zaglavlje kao 'nonce-...' i u <script> tag stuba. To je najfleksibilnija opcija za dinamičke stranice.
  2. Hash. Dodajte SHA-256 hash točnog sadržaja stuba u script-src. To dobro funkcionira za statična web-mjesta, ali svaka promjena stuba, čak i razmaka, prekida ga.
  3. Samostalno hostiranje stuba kao vanjske datoteke na vašoj domeni, pokrivene s 'self'. To zahtijeva pažnju da se učitava dovoljno rano.

Izbjegavajte 'unsafe-inline' kao prečac. On dopušta svaku inline skriptu, čime se uklanja velik dio zaštite koju CSP pruža.

Nonceovi i skripte koje CMP umeće

CMP koji blokira skripte do davanja privole često radi tako da ih zadržava i kasnije umeće. Pod CSP-om temeljenim na nonceu i te umetnute skripte moraju biti dopuštene. Postoje dva uobičajena pristupa:

Upravitelji tagova postavljaju isto pitanje. Ako oglasne i analitičke tagove učitavate preko upravitelja tagova, slijedite njegovu dokumentaciju o nonceovima i pobrinite se da CMP i upravitelj tagova koriste dosljedan pristup.

Oglasni tagovi otežavaju CSP

Programatsko oglašavanje učitava skripte i okvire s mnogih domena, a popis se mijenja kako se mijenjaju partneri za potražnju. Izdavači obično biraju jedno od dvoje:

U oba slučaja CMP treba biti na izričitom popisu dopuštenih, a ne pokriven samo zamjenskim znakom, kako promjena CSP-a nikada nečujno ne bi onemogućila banner.

Uvodite s report-only načinom

Prvo koristite zaglavlje Content-Security-Policy-Report-Only. Preglednik prijavljuje prekršaje a ništa ne blokira, pa možete vidjeti što bi nova politika pokvarila.

  1. Postavite politiku u report-only načinu s krajnjom točkom za izvješćivanje.
  2. Učitajte stranice u čistim profilima preglednika i prođite cijeli tijek privole: prvi posjet, prihvati sve, odbij sve, prilagođen odabir, povlačenje.
  3. Pregledajte izvješća o prekršajima i konzolu preglednika zbog blokiranih CMP resursa.
  4. Prilagodite politiku, pa prijeđite na provedbu.
  5. Zadržite izvješćivanje uključeno i nakon provedbe kako biste uhvatili regresije.

Simptomi sukoba s CSP-om

Ključni zaključci

← Blog Pročitaj sve →