Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La directiva de seguridad de contenido (CSP) es una capa adicional de seguridad que ayuda a detectar y mitigar algunos tipos de ataques web, como scripting entre sitios, ataques de inyección de datos, desfase de sitio o la distribución de malware. CSP proporciona un amplio conjunto de directivas que ayudan a controlar los recursos que puede cargar una página del sitio. Cada directiva define las restricciones para un tipo específico de recurso.
Prerequisites
Importante
Pruebe primero los cambios de CSP en un entorno de desarrollo. La habilitación o modificación de CSP en sitios existentes podría interrumpir la funcionalidad si la directiva no tiene en cuenta scripts de terceros, código personalizado o recursos externos.
Use el siguiente enfoque al realizar cambios en CSP:
- Comience con el modo de solo informe para identificar infracciones sin bloquear recursos.
- Revise la consola del explorador para ver los mensajes de infracción de CSP.
- Agregue los orígenes necesarios de forma incremental en función de las infracciones encontradas.
- Cambie al modo de cumplimiento una vez que no se notifique ninguna infracción crítica.
Directiva de CSP predeterminada
Importante
En el caso de los sitios creados después del 10 de noviembre de 2025, CSP está habilitado de forma predeterminada con la siguiente directiva:
script-src 'self' content.powerapps.com content.powerapps.us content.appsplatform.us content.powerapps.cn 'nonce';
style-src 'unsafe-inline' https:;
Esta directiva predeterminada:
- Permite scripts del origen de su sitio ('self')
- Permite scripts de los dominios de distribución de contenido de Power Pages
- Usa la validación de scripts basada en nonce para scripts en línea
- Permite estilos en línea y estilos de fuentes HTTPS
En el caso de los sitios creados antes de este cambio: ES posible que CSP no esté habilitado. Se recomienda habilitarlo mediante la configuración del sitio HTTP/Content-Security-Policy. Consulte Guía de migración de sitios> existentes para obtener instrucciones paso a paso.
Comprender las directivas predeterminadas
| Directiva | Valor | Propósito |
|---|---|---|
script-src |
'self' |
Permite scripts del origen de tu sitio |
script-src |
content.powerapps.com, content.powerapps.us, content.appsplatform.us, content.powerapps.cn |
Permite scripts de la plataforma Power Pages |
script-src |
'nonce' |
Habilita la validación basada en nonce para scripts en línea |
style-src |
'unsafe-inline' |
Permite estilos en línea (necesarios para muchas características del sitio) |
style-src |
https: |
Permite estilos de cualquier origen HTTPS |
Personalización de CSP
Puede modificar, ampliar o deshabilitar la directiva de CSP predeterminada para cumplir los requisitos específicos del sitio.
Modificación o deshabilitación de CSP
- Inicie sesión en Power Pages y abra el sitio para su edición.
- En el panel lateral izquierdo, seleccione Más elementos (…) >Gestión del portal.
- Seleccione Configuración del sitio en la aplicación Administración del portal .
- Busque o cree la configuración del sitio HTTP/Content-Security-Policy .
- Modifique el valor según sea necesario. Para deshabilitar CSP, desactive el valor de configuración del sitio (déjelo vacío) en lugar de eliminar la configuración.
Adición de orígenes de scripts externos
Si el sitio usa bibliotecas externas de JavaScript (por ejemplo, análisis, widgets de chat), agregue sus dominios a la script-src directiva:
script-src 'self' content.powerapps.com content.powerapps.us
content.appsplatform.us content.powerapps.cn 'nonce'
https://cdn.example.com https://analytics.example.com;
style-src 'unsafe-inline' https:;
Adición de directivas adicionales
Puede agregar más directivas CSP según sea necesario. Entre las adiciones comunes se incluyen:
| Directiva | Example | Propósito |
|---|---|---|
img-src |
img-src 'self' https: data:; |
Controlar orígenes de imágenes |
font-src |
font-src 'self' https://fonts.gstatic.com; |
Gestionar orígenes de fuentes |
connect-src |
connect-src 'self' https://api.example.com; |
Controlar los destinos de AJAX/fetch |
frame-src |
frame-src 'self' https://www.youtube.com; |
Fuentes de control iframe |
frame-ancestors |
frame-ancestors 'self'; |
Controlar quién puede incrustar tu sitio |
media-src |
media-src 'self' https:; |
Controlar orígenes de audio y vídeo |
object-src |
object-src 'none'; |
Bloquear complementos (Flash, applets java) |
Compatibilidad con Nonce
¿Qué es un nonce?
Un "nonce" (número usado una vez) es un valor aleatorio criptográfico generado para cada solicitud de página. Al activar nonce, solo se ejecutan scripts insertados que incluyen un atributo nonce que coincida.
¿Cómo funciona nonce en Power Pages?
Al incluir "nonce" en la directiva de la Política de Seguridad de Contenido (CSP):
- Power Pages genera un valor nonce único para cada solicitud de página.
- Power Pages agrega automáticamente el nonce a las etiquetas de script insertadas de orígenes de confianza.
- Power Pages bloquea los scripts insertados sin un nonce coincidente.
- Este proceso impide que se ejecuten scripts malintencionados insertados.
- Power Pages protege los controladores de eventos en línea por separado a través de la generación automática de hash.
Nonce está habilitado de forma predeterminada
La política CSP predeterminada incluye "nonce" en la directiva script-src, proporcionando así protección automática para scripts insertados de orígenes de confianza.
¿Cómo funciona nonce con scripts personalizados?
Power Pages gestiona automáticamente la inyección de nonce en la mayoría de los escenarios.
Plantillas Liquid: Power Pages inserta automáticamente el atributo nonce en scripts en línea representados a través de plantillas Liquid una vez realizada la representación. No se requiere ninguna acción de los creadores.
Controladores de eventos insertados: Power Pages protege automáticamente los controladores de eventos a través de la generación de hash. No se necesita ninguna acción manual.
Scripts creados dinámicamente: Scripts creados durante el tiempo de ejecución mediante JavaScript (por ejemplo, mediante
document.createElement) no pueden recibir el nonce del lado servidor. Siempre que sea posible, mueva estos scripts a archivos externos y agregue sus dominios de origen a lascript-srcdirectiva .
Prueba con el modo de solo informe
Antes de aplicar una directiva de CSP, use el modo de solo informe para identificar lo que bloquea la directiva sin bloquearla:
- En Administración del portal, cree una configuración de sitio denominada
HTTP/Content-Security-Policy-Report-Only. - Establezca su valor en la directiva de CSP que desea probar.
- Abra el sitio en un explorador y compruebe si hay informes de infracciones en la consola.
- Solucione todas las infracciones ajustando la directiva.
- Una vez satisfecho, mueva el valor de la directiva a
HTTP/Content-Security-Policy(modo de cumplimiento). - Elimine la configuración del sitio
HTTP/Content-Security-Policy-Report-Only.
Nota:
Puede usar ambos HTTP/Content-Security-Policy y HTTP/Content-Security-Policy-Report-Only simultáneamente. Use solo informe para probar directivas más estrictas al aplicar una directiva de línea de base.
Guía de migración para sitios existentes
En el caso de los sitios creados antes de habilitar CSP de forma predeterminada, siga estos pasos para habilitar CSP:
Paso 1: Comprobación del estado actual de CSP
- Abrir Gestión del Portal>Configuración del sitio.
- Busque
HTTP/Content-Security-Policy. - Si la configuración no existe, CSP no está habilitada en el sitio.
Nota:
Cuando no configura CSP, el verificador de salud del sitio muestra una advertencia: "Falta la configuración de la política de seguridad de contenido HTTP o está mal configurada". Puede comprobar esta advertencia en los diagnósticos de salud de su sitio.
Paso 2: Empezar con el modo de solo informe
Cree una configuración de sitio denominada
HTTP/Content-Security-Policy-Report-Onlycon la directiva predeterminada.script-src 'self' content.powerapps.com content.powerapps.us content.appsplatform.us content.powerapps.cn 'nonce'; style-src 'unsafe-inline' https:;Navega por tu sitio y verifica las infracciones en la consola del navegador.
Agregue los dominios externos necesarios a la directiva.
Paso 3: Habilitar el cumplimiento
- Cree la configuración del
HTTP/Content-Security-Policysitio con su política probada. - Puede quitar la configuración de solo informes.
- Supervise los problemas y ajuste según sea necesario.
Considerations
Los sitios existentes no se migran automáticamente a CSP para su aplicación.
La inserción automática de nonce controla JavaScript personalizado agregado a través del editor de código para el contenido procesado por Liquid.
Debe agregar explícitamente dominios para scripts de terceros (análisis, widgets de chat, etc.) a
script-src.
Solución de problemas
Los scripts de orígenes externos están bloqueados
Síntoma: la consola del explorador muestra una infracción de CSP para un origen de script.
Solución: en primer lugar, compruebe que el origen externo es de confianza y necesario para el sitio. Agregue solo dominios de orígenes de confianza. Una vez validado, agregue el dominio del script a la script-src directiva:
script-src 'self' content.powerapps.com content.powerapps.us
content.appsplatform.us content.powerapps.cn 'nonce'
https://blocked-domain.com;
style-src 'unsafe-inline' https:;
Los scripts en línea no se ejecutan
Síntoma: Los scripts personalizados embebidos no se ejecutan; violación de CSP nonce en la consola.
Solución: en el caso del contenido representado por Liquid, Power Pages inserta automáticamente el atributo nonce. Si los scripts siguen bloqueados, asegúrese de que el script está dentro de una plantilla Liquid o una página renderizada por el servidor en la que se aplica la inserción automática de nonce. Para los scripts creados dinámicamente, considere la posibilidad de moverlos a archivos .js externos y agregar el dominio de origen a la directiva de CSP.
Las imágenes o fuentes no se cargan
Síntoma: las imágenes aparecen rotas o las fuentes personalizadas no se representan. La consola del navegador muestra las infracciones de CSP para img-src o font-src.
Solución: agregue la directiva de origen adecuada a la directiva de CSP:
img-src 'self' https: data:;
font-src 'self' https://fonts.gstatic.com
https://fonts.googleapis.com;
Los Iframes no se muestran
Síntoma: El contenido incrustado (YouTube, Maps, Power BI) no se carga. La consola del navegador muestra las violaciones de CSP para frame-src.
Solución: agregue frame-src con los dominios necesarios:
frame-src 'self' https://www.youtube.com
https://app.powerbi.com;
Widgets de terceros que no funcionan
Síntoma: los widgets de chat, los scripts de análisis u otras integraciones de terceros no se cargan ni funcionan correctamente.
Solución: los widgets de terceros suelen requerir varias directivas. Compruebe la consola del navegador para todos los tipos de infracción y agregue las fuentes necesarias. Ejemplo de un widget de chat:
script-src 'self' content.powerapps.com 'nonce'
https://widget.chatprovider.com;
style-src 'unsafe-inline' https:;
connect-src 'self' https://api.chatprovider.com;
frame-src 'self' https://widget.chatprovider.com;
img-src 'self' https: data:;
Referencia de configuración del sitio
| Configuración del sitio | Propósito | Predeterminado |
|---|---|---|
| HTTP/Content-Security-Policy | Directiva de CSP completa (modo de cumplimiento) | Consulte la directiva predeterminada anterior (solo nuevos sitios) |
| HTTP/Content-Security-Policy-Report-Only | Directiva CSP en modo solo de informe (infracciones registradas, no bloqueadas) | No establecido |
procedimientos recomendados
- Comience con la directiva predeterminada: el CSP predeterminado proporciona protección segura al tiempo que permite que las características de Power Pages funcionen correctamente.
- Pruebe primero con el modo de solo informe: use HTTP/Content-Security-PolicyReport-Only para identificar lo que se bloquearía antes de aplicar.
-
Agregar orígenes de forma incremental: al integrar servicios externos, agregue solo los dominios específicos necesarios. Evite caracteres comodín amplios como
https:parascript-src. -
Evite
unsafe-inlinepara scripts: el enfoque basado en nonce es más seguro que permitir todos los scripts en línea. La directiva predeterminada usa nonce en lugar deunsafe-inlineparascript-src. - Supervisión de la consola del explorador: las infracciones de CSP se registran en la consola del explorador, lo que ayuda a identificar los recursos bloqueados.
- Revisar y reforzar las directivas periódicamente: a medida que identifica y quita dependencias de recursos externos, refuerce las políticas de CSP en consecuencia.
-
Use dominios específicos, no comodines: en lugar de
https:, especifique dominios exactos (por ejemplo,https://cdn.example.com) para mejorar la seguridad.
Escenarios comunes
Escenario: Adición de Google Analytics
script-src 'self' content.powerapps.com 'nonce'
https://www.googletagmanager.com
https://www.google-analytics.com;
style-src 'unsafe-inline' https:;
img-src 'self' https: data:;
connect-src 'self'
https://www.google-analytics.com
https://analytics.google.com;
Escenario: Agregar una inserción de YouTube
script-src 'self' content.powerapps.com 'nonce';
style-src 'unsafe-inline' https:;
frame-src 'self' https://www.youtube.com
https://www.youtube-nocookie.com;
Escenario: Uso de fuentes de Google
script-src 'self' content.powerapps.com 'nonce';
style-src 'unsafe-inline'
https://fonts.googleapis.com;
font-src 'self' https://fonts.gstatic.com;