Stöd för CSP (Content Security Policy)
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:er kan webbläsaren (för användarens räkning) verifiera att skriptet verkligen kommer från en betrodd källa.
CSP implementeras genom att lägga till en Content-Security-Policy
HTTP-huvud till serversvar eller genom att lägga till en konfigurerad <meta>
-elementet i <head>
i dina HTML-filer.
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 regler för anpassad kod på sidan och de kommer inte att utföras 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ägg 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 Content-Security-Policy
header. 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 värdtjänster ditt bibliotek, är källan för ditt bygge troligtvis 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'">
Värdtjänster som hanteras av Adobe
Om du använder en värddator som hanteras av Adobeoch din version underhålls 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 behöver också assets.adobedtm.com
för att anges 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 mycket 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 behöver också assets.adobedtm.com
för att anges som säker, annars läses inte ditt bibliotek 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. Du kan välja mellan två alternativ:
- Tillåt som en gång (god säkerhet)
- Tillåt alla textbundna skript (minst säkert)
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.
I exemplen nedan visas hur du kan lägga till ditt namn i CSP-konfigurationen för en värddator som hanteras med Adobe. Om du använder värdtjänster 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 ange var taggen ska hittas när ett textbundet skript läses in. För att en tagg ska kunna använda nonce när skriptet läses in måste du:
- Skapa ett dataelement som refererar till var nonce finns i datalagret.
- Konfigurera Core Extension och ange vilket dataelement du använde.
- Publicera dataelement och ändringar i Core Extension.
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'">
Värdtjänster som hanteras av Adobe
Använd följande konfigurationer om du använder värdtjänster som hanteras i Adobe:
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. Se guiden SRI-kompatibilitet för plattform för mer information.