Stöd för CSP (Content Security Policy)

NOTE
Adobe Experience Platform Launch har omprofilerats till en serie tekniker för datainsamling i Adobe Experience Platform. Som ett resultat av detta har flera terminologiska förändringar genomförts i produktdokumentationen. Se följande dokument för en konsoliderad referens av terminologiändringarna.

En CSP (Content Security Policy) är en säkerhetsfunktion som hjälper till att förhindra serveröverskridande skriptattacker (XSS). Det här händer när webbläsaren tricks med att köra skadligt innehåll som verkar komma från en betrodd källa men som verkligen kommer från någon annan. Med CSP kan webbläsaren (för användaren) verifiera att skriptet verkligen kommer från en betrodd källa.

CSP:er implementeras genom att en Content-Security-Policy HTTP-rubrik läggs till i serversvaren, eller genom att ett konfigurerat <meta> -element läggs till i <head> -avsnittet i dina HTML-filer.

NOTE
Mer detaljerad information om CSP finns i MDN-webbdokumenten.

Taggar i Adobe Experience Platform är ett tagghanteringssystem som är utformat för att dynamiskt läsa in skript på din webbplats. En standard-CSP blockerar dessa dynamiskt inlästa skript på grund av potentiella säkerhetsproblem. Det här dokumentet innehåller riktlinjer för hur du konfigurerar din CSP så att dynamiskt inlästa skript från taggar tillåts.

Om du vill att taggar ska fungera med din CSP finns det två stora utmaningar att övervinna:

  • Källan för ditt taggbibliotek måste vara betrodd. Om det här villkoret inte uppfylls blockeras taggbiblioteket och andra nödvändiga JavaScript-filer av webbläsaren och läses inte in på sidan.
  • Textbundna skript måste tillåtas. Om det här villkoret inte uppfylls blockeras åtgärder för anpassade kodregler på sidan och utförs inte korrekt.

Ökad säkerhet kräver mer arbete för innehållsskaparens räkning. Om du vill använda taggar och ha en CSP på plats måste du åtgärda båda dessa problem utan att felaktigt markera andra skript som säkra. Resten av detta dokument innehåller riktlinjer för hur du ska uppnå detta.

Lägga till taggar som en betrodd källa

När du använder en CSP måste du inkludera alla betrodda domäner inom värdet för rubriken Content-Security-Policy. Vilket värde du måste ange för taggar varierar beroende på vilken typ av värdtjänst du använder.

Självvärdande

Om du är självvärd för ditt bibliotek är källan för ditt bygge förmodligen din egen domän. Du kan ange att värddomänen är en säker källa med följande konfiguration:

HTTP-huvud

Content-Security-Policy: script-src 'self'

HTML <meta> tag

<meta http-equiv="Content-Security-Policy" content="script-src 'self'">

Adobe-hanterade värdtjänster

Om du använder en Adobe-hanterad värd bevaras din version på assets.adobedtm.com. Du bör ange self som en säker domän så att du inte bryter några skript som du redan läser in, men du måste också ange assets.adobedtm.com som säker, annars läses inte taggbiblioteket in på sidan. I så fall bör du använda följande konfiguration:

HTTP-huvud

Content-Security-Policy: script-src 'self' assets.adobedtm.com

HTML <meta> tag

Det finns en viktig förutsättning: Du måste läsa in taggbiblioteket asynkront. Detta fungerar inte med synkron inläsning av taggbiblioteket (vilket resulterar i konsolfel och att reglerna inte körs som de ska).

<meta http-equiv="Content-Security-Policy" content="script-src 'self' assets.adobedtm.com">

Du bör ange self som en säker domän så att alla skript som du redan läser in fortsätter att fungera, men du måste även ange assets.adobedtm.com som säker, annars läses inte biblioteksbygget in på sidan.

Textbundna skript

CSP tillåter inte infogade skript som standard och måste därför konfigureras manuellt för att tillåta dem. Det finns två alternativ för att tillåta textbundna skript:

NOTE
CSP-specifikationen innehåller information om ett tredje alternativ som använder hash-koder, men det här tillvägagångssättet går inte att använda med tagghanteringssystem som taggar. Mer information om begränsningarna med att använda hash-koder med taggar i Experience Platform finns i guiden Delresursintegritet (SRI).

Tillåt som en gång nonce

Den här metoden innebär att generera en kryptografisk engångsversion och lägga till den i din CSP och alla infogade skript på din plats. När webbläsaren tar emot en instruktion om att läsa in ett textbundet skript med ett nonce, jämför webbläsaren värdet nonce med vad som finns i CSP-huvudet. Om det matchar läses skriptet in. Det här värdet ska ändras för varje ny sidinläsning.

IMPORTANT
Om du vill använda den här metoden måste du läsa in bygget asynkront. Detta fungerar inte när bygget läses in synkront, vilket resulterar i konsolfel och att reglerna inte körs som de ska. Mer information finns i guiden om asynkron distribution.

I exemplen nedan visas hur du kan lägga till ditt namn i CSP-konfigurationen för en Adobe-hanterad värd. Om du använder självbetjäning kan du utesluta assets.adobedtm.com.

HTTP-huvud

Content-Security-Policy: script-src 'self' assets.adobedtm.com 'nonce-2726c7f26c'

HTML <meta> tag

<meta http-equiv="Content-Security-Policy" content="script-src 'self' assets.adobedtm.com 'nonce-2726c7f26c'">

När du har konfigurerat sidhuvudet eller HTML-taggen måste du tala om för taggen var du ska hitta nonce när du läser in ett textbundet skript. För att en tagg ska kunna använda nonce när skriptet läses in måste du:

  1. Skapa ett dataelement som refererar till var nonce finns i datalagret.
  2. Konfigurera Core Extension och ange vilket dataelement du använde.
  3. Publicera dataelement och ändringar i Core Extension.
NOTE
Ovanstående process hanterar bara inläsning av din anpassade kod, inte vad den anpassade koden gör. Om ett infogat skript innehåller anpassad kod som inte är kompatibel med din CSP har CSP företräde. Om du till exempel använder anpassad kod för att läsa in ett infogat skript genom att lägga till det i DOM, kan taggen inte lägga till det på rätt sätt, så att en viss anpassad kodsåtgärd inte fungerar som förväntat.

Tillåt alla textbundna skript unsafe-inline

Om det inte fungerar att använda funktioner för dig kan du konfigurera din CSP så att alla infogade skript tillåts. Det här är det minst säkra alternativet, men det är också enklare att implementera och underhålla.

Exemplen nedan visar hur kan tillåta alla infogade skript i CSP-huvudet.

Självvärdande

Använd följande konfigurationer om du använder värdtjänster:

HTTP-huvud

Content-Security-Policy: script-src 'self' 'unsafe-inline'

HTML <meta> tag

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'">

Adobe-hanterade värdtjänster

Använd följande konfigurationer om du använder Adobe-hanterade värdtjänster:

HTTP-huvud

Content-Security-Policy: script-src 'self' assets.adobedtm.com 'unsafe-inline'

HTML <meta> tag

<meta http-equiv="Content-Security-Policy" content="script-src 'self' assets.adobedtm.com 'unsafe-inline'">

Nästa steg

Genom att läsa det här dokumentet bör du nu förstå hur du konfigurerar CSP-huvudet så att det godkänner taggbiblioteksfilen och infogade skript.

Som en extra säkerhetsåtgärd kan du även välja att använda SRI (Subresource Integrity) för att validera hämtade biblioteksbyggen. Den här funktionen har dock vissa begränsningar när den används med tagghanteringssystem som taggar. Mer information finns i guiden om SRI-kompatibilitet i Experience Platform.

recommendation-more-help
12b4e4a9-5028-4d88-8ce6-64a580811743