Content Security Policy a váš CMP: jak zajistit, aby CSP a souhlas fungovaly společně

Dvě bezpečnostní vrstvy, které se musí shodnout

Content Security Policy (CSP) říká prohlížeči, z jakých zdrojů smí stránka načítat skripty, styly, obrázky, rámce a síťové požadavky. Platforma pro správu souhlasu dělá opačnou práci: rozhoduje, které z těchto skriptů smějí běžet na základě volby uživatele. Když se obojí konfiguruje zvlášť, srazí se. CMP se nenačte, protože ho CSP blokuje, nebo se CSP uvolní tak, aby vyhovělo CMP a reklamním tagům, že už nic nechrání.

Tento průvodce vysvětluje, které direktivy CSP CMP obvykle potřebuje, jak nonce interagují s vkládáním skriptů a jak nasadit změny, aniž by se rozbil banner.

Co CMP obvykle od CSP potřebuje

Přesné požadavky závisejí na dodavateli, proto vždy vycházejte z dokumentace svého CMP. Obecně zkontrolujte tyto direktivy:

Na webech s TCF pamatujte, že CMP na stránce vytváří také rámec lokátor s názvem __tcfapiLocator. Tento rámec se vytváří bez vzdáleného zdroje, takže obvykle nepotřebuje položku v frame-src, ale stojí za to to při testování potvrdit.

Problém s inline stubem

Většina CMP po vás chce, abyste do hlavičky stránky vložili malý inline skript — stub — aby ostatní skripty mohly řadit volání do fronty dříve, než se načte hlavní CMP. Přísná CSP inline skripty blokuje, pokud je výslovně nepovolíte. Máte tři možnosti:

  1. Nonce. Vygenerujte náhodnou hodnotu pro každou odpověď, přidejte ji do hlavičky CSP jako 'nonce-...' a do tagu <script> stubu. Je to nejflexibilnější možnost pro dynamické stránky.
  2. Hash. Přidejte hash SHA-256 přesného obsahu stubu do script-src. Pro statické weby to funguje dobře, ale jakákoli změna stubu, i mezery, ho rozbije.
  3. Vlastní hostování stubu jako externího souboru na vaší doméně, pokryté direktivou 'self'. To vyžaduje pozornost, aby se načítal dostatečně brzy.

Nepoužívejte 'unsafe-inline' jako zkratku. Povoluje každý inline skript, čímž odstraňuje velkou část ochrany, kterou CSP poskytuje.

Nonce a skripty, které CMP vkládá

CMP, který blokuje skripty do udělení souhlasu, často funguje tak, že je zadržuje a později vkládá. U CSP založené na nonce musí být povoleny i tyto vložené skripty. Existují dva běžné přístupy:

Správci tagů otevírají stejnou otázku. Pokud reklamní a analytické tagy načítáte přes správce tagů, řiďte se jeho dokumentací k nonce a zajistěte, aby CMP a správce tagů používaly konzistentní přístup.

Reklamní tagy CSP ztěžují

Programatická reklama načítá skripty a rámce z mnoha domén a seznam se mění, jak se mění poptávkoví partneři. Vydavatelé obvykle volí jedno ze dvou:

V obou případech by měl být CMP na explicitním seznamu povolených, ne pokrytý jen zástupným znakem, aby změna CSP nikdy tiše nevypnula banner.

Nasazujte s režimem report-only

Nejprve použijte hlavičku Content-Security-Policy-Report-Only. Prohlížeč hlásí porušení, aniž by cokoli blokoval, takže uvidíte, co by nová politika rozbila.

  1. Nasaďte politiku v režimu report-only s koncovým bodem pro reportování.
  2. Načtěte stránky v čistých profilech prohlížeče a projděte celý tok souhlasu: první návštěva, přijmout vše, odmítnout vše, vlastní volba, odvolání.
  3. Zkontrolujte zprávy o porušení a konzoli prohlížeče kvůli blokovaným zdrojům CMP.
  4. Upravte politiku a poté přepněte na vynucování.
  5. Reportování nechte zapnuté i po vynucení, abyste zachytili regrese.

Příznaky konfliktu s CSP

Hlavní poznatky

← Blog Číst vše →