Content Security Policy og CMP-en din: få CSP og samtykke til å fungere sammen

To sikkerhetslag som må være enige

En Content Security Policy (CSP) forteller nettleseren hvilke kilder en side kan laste skript, stiler, bilder, frames og nettverksforespørsler fra. En consent management platform gjør det motsatte: den avgjør hvilke av disse skriptene som får kjøre, basert på brukerens valg. Når de to konfigureres hver for seg, kolliderer de. CMP-en lastes ikke fordi CSP blokkerer den, eller CSP-en lempes så mye for å huse CMP-en og annonsetaggene at den ikke lenger beskytter noe.

Denne veiledningen forklarer hvilke CSP-direktiver en CMP vanligvis trenger, hvordan nonces samspiller med skriptinjeksjon, og hvordan du ruller ut endringer uten å ødelegge banneret ditt.

Hva en CMP vanligvis trenger fra CSP

De nøyaktige kravene avhenger av leverandøren, så ta alltid utgangspunkt i CMP-ens egen dokumentasjon. Sjekk generelt disse direktivene:

På TCF-nettsteder må du huske at CMP-en også oppretter en locator-frame ved navn __tcfapiLocator på siden. Den framen opprettes uten ekstern kilde, så den trenger normalt ingen frame-src-oppføring, men det er verdt å bekrefte i testing.

Problemet med inline-stubben

De fleste CMP-er ber deg plassere et lite inline-skript — stubben — i sidens head, slik at andre skript kan sette kall i kø før hoved-CMP-en lastes. En streng CSP blokkerer inline-skript med mindre du uttrykkelig tillater dem. Du har tre alternativer:

  1. En nonce. Generer en tilfeldig verdi per respons, legg den til CSP-headeren som 'nonce-...' og til stubbens <script>-tagg. Dette er det mest fleksible alternativet for dynamiske sider.
  2. En hash. Legg SHA-256-hashen av stubbens nøyaktige innhold til i script-src. Dette fungerer godt for statiske nettsteder, men enhver endring av stubben, selv i mellomrom, ødelegger det.
  3. Å selvhoste stubben som en ekstern fil på ditt eget domene, dekket av 'self'. Dette krever omhu for å sikre at den lastes tidlig nok.

Unngå 'unsafe-inline' som snarvei. Det tillater alle inline-skript, noe som fjerner mye av beskyttelsen CSP gir.

Nonces og skript CMP-en injiserer

En CMP som blokkerer skript frem til samtykke fungerer ofte ved å holde dem tilbake og injisere dem senere. Under en nonce-basert CSP må også disse injiserte skriptene tillates. Det finnes to vanlige tilnærminger:

Tag managers reiser det samme spørsmålet. Hvis du laster annonse- og analysetagger gjennom en tag manager, følg dens dokumentasjon om nonces og sørg for at CMP og tag manager bruker en konsistent tilnærming.

Annonsetagger gjør CSP vanskeligere

Programmatisk annonsering laster skript og frames fra mange domener, og listen endres når demand-partnere endres. Utgivere gjør vanligvis ett av to valg:

Uansett bør CMP-en stå eksplisitt på tillatelseslisten, ikke bare være dekket av et jokertegn, slik at en CSP-endring aldri i det stille deaktiverer banneret.

Rull ut med report-only-modus

Bruk headeren Content-Security-Policy-Report-Only først. Nettleseren rapporterer brudd uten å blokkere noe, slik at du kan se hva en ny policy ville ødelagt.

  1. Rull ut policyen i report-only-modus med et rapporteringsendepunkt.
  2. Last sider i rene nettleserprofiler og gå gjennom hele samtykkeflyten: første besøk, godta alle, avvis alle, egendefinert valg, tilbaketrekking.
  3. Gå gjennom bruddrapportene og nettleserkonsollen etter blokkerte CMP-ressurser.
  4. Juster policyen, og bytt deretter til håndheving.
  5. La rapporteringen være på etter håndhevingen for å fange regresjoner.

Symptomer på en CSP-konflikt

Viktigste poenger

← Blogg Les alt →