Content Security Policy i el teu CMP: com fer que CSP i consentiment funcionin junts

Dues capes de seguretat que han d'estar d'acord

Una Content Security Policy (CSP) diu al navegador des de quines fonts pot una pàgina carregar scripts, estils, imatges, frames i sol·licituds de xarxa. Una plataforma de gestió del consentiment fa la feina contrària: decideix quins d'aquests scripts poden executar-se segons l'elecció de l'usuari. Quan es configuren per separat, col·lisionen. El CMP no es carrega perquè la CSP el bloqueja, o la CSP s'afluixa tant per acomodar el CMP i les etiquetes d'anuncis que ja no protegeix res.

Aquesta guia explica quines directives de CSP sol necessitar un CMP, com interactuen els nonces amb la injecció d'scripts i com desplegar canvis sense trencar el bàner.

Què sol necessitar un CMP de la CSP

Els requisits exactes depenen del proveïdor, així que parteix sempre de la documentació del teu CMP. En general, comprova aquestes directives:

En llocs amb TCF, recorda que el CMP també crea un frame localitzador anomenat __tcfapiLocator a la pàgina. Aquest frame es crea sense font remota, de manera que normalment no necessita una entrada a frame-src, però convé confirmar-ho en les proves.

El problema de l'stub en línia

La majoria de CMP et demanen que posis un petit script en línia — l'stub — al head de la pàgina, perquè altres scripts puguin posar crides en cua abans que es carregui el CMP principal. Una CSP estricta bloqueja els scripts en línia tret que els permetis explícitament. Tens tres opcions:

  1. Un nonce. Genera un valor aleatori per resposta, afegeix-lo a la capçalera CSP com a 'nonce-...' i a l'etiqueta <script> de l'stub. És l'opció més flexible per a pàgines dinàmiques.
  2. Un hash. Afegeix el hash SHA-256 del contingut exacte de l'stub a script-src. Funciona bé per a llocs estàtics, però qualsevol canvi a l'stub, fins i tot d'espais en blanc, el trenca.
  3. Allotjar l'stub pel teu compte com a fitxer extern al teu propi domini, cobert per 'self'. Cal anar amb compte perquè es carregui prou aviat.

Evita 'unsafe-inline' com a drecera. Permet tots els scripts en línia, cosa que elimina gran part de la protecció que ofereix la CSP.

Nonces i scripts que injecta el CMP

Un CMP que bloqueja scripts fins al consentiment sovint funciona retenint-los i injectant-los més tard. Amb una CSP basada en nonces, aquests scripts injectats també s'han de permetre. Hi ha dos enfocaments habituals:

Els gestors d'etiquetes plantegen la mateixa qüestió. Si carregues etiquetes d'anuncis i d'analítica mitjançant un gestor d'etiquetes, segueix la seva documentació sobre nonces i assegura't que el CMP i el gestor d'etiquetes facin servir un enfocament coherent.

Les etiquetes d'anuncis compliquen la CSP

La publicitat programàtica carrega scripts i frames de molts dominis, i la llista canvia a mesura que canvien els socis de demanda. Els editors solen fer una d'aquestes dues eleccions:

En qualsevol cas, el CMP hauria d'estar a la llista de permesos explícita, no cobert només per un comodí, perquè un canvi de CSP mai no desactivi el bàner en silenci.

Desplega amb el mode només informe

Fes servir primer la capçalera Content-Security-Policy-Report-Only. El navegador informa de les violacions sense bloquejar res, de manera que pots veure què trencaria una política nova.

  1. Desplega la política en mode només informe amb un punt final d'informes.
  2. Carrega pàgines en perfils de navegador nets i recorre tot el flux de consentiment: primera visita, acceptar-ho tot, rebutjar-ho tot, elecció personalitzada, retirada.
  3. Revisa els informes de violacions i la consola del navegador per detectar recursos del CMP bloquejats.
  4. Ajusta la política i després passa a l'aplicació efectiva.
  5. Mantén els informes activats després de l'aplicació per detectar regressions.

Símptomes d'un conflicte de CSP

Idees clau

← Blog Llegir tot →