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'
NOTE
El Adobe no recomienda especificar 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:;
recommendation-more-help
ad108910-6329-42f1-aa1d-5920a2b13636