Ayuda sobre Política de seguridad de contenido (CSP)

Una directiva de seguridad de contenido (CSP) es una función de seguridad que ayuda a evitar ataques de secuencias de comandos entre sitios (XSS). Esto sucede cuando se engaña al explorador para que ejecute contenido malicioso que parece provenir de una fuente de confianza, pero que realmente proviene de otro lugar. Los CSP permiten al navegador (en nombre del usuario) verificar que el script viene de una fuente de confianza.

Los CSP se implementan agregando un encabezado HTTP Content-Security-Policy a las respuestas del servidor o agregando un elemento <meta> configurado en la sección <head> de los archivos HTML.

NOTA

Para obtener información más detallada sobre los CSP, consulte los documentos web de MDN.

Como sistema de administración de etiquetas, Adobe Experience Platform Launch está diseñado para cargar dinámicamente scripts en su sitio web. Un CSP predeterminado bloquea estas secuencias de comandos cargadas dinámicamente debido a posibles problemas de seguridad. Este documento proporciona instrucciones sobre cómo configurar el CSP para permitir scripts cargados dinámicamente desde Platform Launch.

Si quiere que Adobe Experience Platform Launch funcione con su CSP, existen dos desafíos principales que se deben superar:

  • El origen de la biblioteca de Platform Launch debe ser de confianza. Si no se cumple esta condición, el explorador bloqueará la biblioteca de Platform Launch y otros archivos JavaScript necesarios y no se cargarán en la página.
  • Se deben permitir los scripts en línea. Si no se cumple esta condición, las acciones de regla de código personalizado se bloquean en la página y no se ejecutan correctamente.

Si desea utilizar Platform Launch y dispone de un CSP, debe corregir ambos problemas sin marcar incorrectamente otros scripts como seguros. El aumento de la seguridad significa aumentar también la cantidad de trabajo por su parte.

Si desea utilizar Platform Launch y dispone de un CSP, debe corregir ambos problemas sin marcar incorrectamente otros scripts como seguros. El resto de este documento ofrece instrucciones sobre cómo lograrlo.

Añada Platform Launch como fuente de confianza

Al utilizar un CSP, debe incluir todos los dominios de confianza dentro del valor del encabezado Content-Security-Policy. El valor que debe proporcionar Platform Launch variará según el tipo de alojamiento que utilice.

Alojamiento propio

Si está alojando su biblioteca usted mismo, la fuente de su biblioteca es probablemente su propio dominio. Puede especificar que el dominio host es un origen seguro mediante la siguiente configuración:

Encabezado HTTP

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

Etiqueta <meta> HTML

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

Alojamiento administrado por Adobe

Si utiliza un host administrado por Adobe, la compilación se mantiene en assets.adobedtm.com. Debe especificar self como dominio seguro para que no se rompan los scripts que ya se están cargando, pero también necesita que assets.adobedtm.com aparezca como seguro o la biblioteca de Platform Launch no se cargará en la página. En este caso, debe utilizar la siguiente configuración:

Encabezado HTTP

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

Etiqueta <meta> HTML

Hay un requisito previo muy importante: debe cargar la biblioteca de Platform Launch asincrónicamente. Esto no funciona con una carga sincrónica de la biblioteca de Platform Launch (lo que provoca errores de consola y reglas que no se ejecutan correctamente).

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

Debe especificar self como dominio seguro para que no se rompan los scripts que ya se están cargando, pero también necesita que assets.adobedtm.com aparezca como origen seguro o la compilación de la biblioteca no se cargará en la página.

Scripts en línea

CSP deshabilita los scripts en línea de forma predeterminada y, por lo tanto, debe configurarse manualmente para permitirlos. Tiene dos opciones para permitir scripts en línea:

NOTA

La especificación CSP tiene detalles para una tercera opción mediante hashes, pero este método no es viable con sistemas de administración de etiquetas como Platform Launch. Para obtener más información sobre las limitaciones del uso de hashes en Platform Launch, consulte la guía Integridad de subrecursos (SRI).

Permitir a través de nonce

Este método implica generar una cadena nonce criptográfica y agregarla a su CSP y a cada script en línea de su sitio. Cuando el explorador recibe una instrucción para cargar un script en línea con una cadena nonce, el explorador compara el valor nonce con el contenido en el encabezado CSP. Si coincide, se carga la secuencia de comandos. Esta cadena nonce debe cambiarse con cada nueva carga de página.

IMPORTANTE

Para utilizar este método, debe cargar la compilación asincrónicamente. Esto no funciona al cargar la compilación sincrónicamente, lo que provoca que los errores de la consola y las reglas no se ejecuten correctamente. Consulte la guía de implementación asincrónica para obtener más información.

Los ejemplos siguientes muestran cómo se puede agregar nonce a la configuración CSP para un host administrado por Adobe. Si utiliza alojamiento propio, puede excluir assets.adobedtm.com.

Encabezado HTTP

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

Etiqueta <meta> HTML

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

Una vez configurado el encabezado o la etiqueta HTML, debe indicar a Platform Launch dónde buscar la cadena nonce al cargar un script en línea. Para que Platform Launch use el nonce cuando carga el script, debe:

  1. Crear un elemento de datos que haga referencia a dónde se encuentra la cadena nonce en la capa de datos.
  2. Configurar la extensión principal y especificar qué elemento de datos ha utilizado.
  3. Publicar los cambios de su elemento de datos y extensión principal.
NOTA

El proceso anterior solo controla la carga del código personalizado, no lo que hace ese código personalizado. Si un script en línea contiene código personalizado que no es compatible con el CSP, este tiene prioridad. Por ejemplo, si utiliza un código personalizado para cargar scripts en línea anexándolos al DOM, Platform Launch no podrá añadir el nonce correctamente, así que la acción de ese código personalizado en particular no funcionará como se esperaba.

Permitir todos los scripts en línea

Si usar nonces no funciona, puede configurar su CSP para que permita los scripts en línea. Esta es la opción menos segura, pero también más fácil de implementar y mantener.

Los ejemplos siguientes muestran cómo se pueden permitir todos los scripts en línea en el encabezado CSP.

Alojamiento propio

Utilice las siguientes configuraciones si utiliza el alojamiento propio:

Encabezado HTTP

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

Etiqueta <meta> HTML

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

Alojamiento administrado por Adobe

Utilice las siguientes configuraciones si utiliza alojamiento administrado por Adobe:

Encabezado HTTP

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

Etiqueta <meta> HTML

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

Pasos siguientes

Al leer este documento, ahora debe comprender cómo configurar el encabezado CSP para aceptar el archivo de biblioteca de Platform Launch y los scripts en línea.

Como medida de seguridad adicional, también puede optar por utilizar la integridad de los subrecursos (SRI) para validar las compilaciones de biblioteca recuperadas. Sin embargo, esta función tiene algunas limitaciones importantes cuando se utiliza con sistemas de administración de etiquetas como Platform Launch. Consulte la guía sobre la compatibilidad con SRI en Platform Launch para obtener más información.

En esta página

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now