Configuración de un CSP
Se usa una Política de seguridad de contenido (CSP) para restringir los recursos que un explorador puede usar. El CSP también puede limitar la funcionalidad de los recursos de script y estilo. El SDK web de Adobe Experience Platform no requiere un CSP, pero añadir uno puede reducir la superficie de ataque para evitar ataques malintencionados.
El CSP necesita reflejar cómo se implementa y configura Platform Web SDK. El siguiente CSP muestra qué cambios pueden ser necesarios para que el SDK funcione correctamente. Es probable que se requiera una configuración CSP adicional, según el entorno específico.
Ejemplo de política de seguridad de contenido
Los siguientes ejemplos muestran cómo configurar un CSP.
Permitir el acceso al dominio Edge
default-src 'self';
connect-src 'self' EDGE-DOMAIN
En el ejemplo anterior, EDGE-DOMAIN
debe reemplazarse con el dominio de origen. El dominio de origen está configurado para la configuración edgeDomain. Si no se ha configurado ningún dominio de origen, EDGE-DOMAIN
debe reemplazarse por *.adobedc.net
. Si la migración de visitantes está activada mediante idMigrationEnabled, la directiva connect-src
también debe incluir *.demdex.net
.
Utilice NONCE para permitir elementos de estilo y scripts en línea
Platform Web SDK puede modificar el contenido de la página y debe aprobarse para crear etiquetas de estilo y script en línea. Para ello, Adobe recomienda utilizar un nonce para la directiva CSP default-src. Un nonce es un token aleatorio criptográficamente fuerte generado por el servidor que se genera una vez por cada vista de página única.
default-src 'nonce-SERVER-GENERATED-NONCE'
Además, el nonce de CSP debe agregarse como atributo a la etiqueta de script Platform Web SDK código base. Platform Web SDK usará ese nonce cuando agregue etiquetas de estilo o script en línea a la página:
<script nonce="SERVER-GENERATED-NONCE">
!function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
[]).push(o),n[o]=function(){var u=arguments;return new Promise(
function(i,l){n[o].q.push([i,l,u])})},n[o].q=[])})}
(window,["alloy"]);
</script>
Si no se usa un nonce, la otra opción es agregar unsafe-inline
a las directivas CSP script-src
y style-src
:
script-src 'unsafe-inline'
style-src 'unsafe-inline'
unsafe-inline
porque permite que se ejecute cualquier script en la página, lo que limita los beneficios del CSP.Configuración de un CSP para mensajería en la aplicación in-app-messaging
Al configurar Mensajería en la aplicación web, debe incluir la siguiente directiva en su CSP:
default-src blob:;