Content Security Policy (CSP) es un estándar de seguridad que ayuda a prevenir ataques de cross-site scripting (XSS) controlando qué recursos puede cargar una página web. Mintlify proporciona una CSP predeterminada que protege a la mayoría de los sitios. Si alojas tu documentación detrás de un proxy inverso o un cortafuegos que sobrescribe la CSP predeterminada, puede que necesites configurar encabezados CSP para que las funciones se ejecuten correctamente.
Las siguientes directivas de CSP controlan qué recursos puede cargar una página:
script-src: Controla qué scripts pueden ejecutarse
style-src: Controla qué hojas de estilo pueden cargarse
font-src: Controla qué fuentes pueden cargarse
img-src: Controla qué imágenes, iconos y logotipos pueden cargarse
connect-src: Controla a qué URL pueden conectarse para llamadas a la API y conexiones WebSocket
frame-src: Controla qué URL pueden incrustarse en frames o iframes
default-src: Valor predeterminado para otras directivas cuando no se establece explícitamente
Lista de dominios permitidos
| Dominio | Propósito | Directiva CSP | Obligatorio |
|---|
d4tuoctqmanu0.cloudfront.net | CSS y fuentes de KaTeX | style-src, font-src | Obligatorio |
*.mintlify.dev | Contenido de la documentación | connect-src, frame-src | Obligatorio |
*.mintlify.com | Dashboard, API, proxy de Analytics | connect-src | Obligatorio |
leaves.mintlify.com | API del assistant | connect-src | Obligatorio |
d3gk2c5xim1je2.cloudfront.net | Íconos, imágenes, logotipos | img-src | Obligatorio |
d1ctpt7j8wusba.cloudfront.net | Archivos de versiones y lanzamientos de Mint | connect-src | Obligatorio |
mintcdn.com | Imágenes, favicons | img-src, connect-src | Obligatorio |
*.mintcdn.com | Imágenes, favicons | img-src, connect-src | Obligatorio |
cdn.jsdelivr.net | Recursos de emojis para imágenes OG | script-src, img-src | Obligatorio |
mintlify.s3.us-west-1.amazonaws.com | Imágenes alojadas en S3 | img-src | Obligatorio |
fonts.googleapis.com | Google Fonts | style-src, font-src | Opcional |
www.googletagmanager.com | Google Analytics/Google Tag Manager (GTM) | script-src, connect-src | Opcional |
cdn.segment.com | Segment Analytics | script-src, connect-src | Opcional |
plausible.io | Plausible Analytics | script-src, connect-src | Opcional |
us.posthog.com | PostHog Analytics | connect-src | Opcional |
tag.clearbitscripts.com | Seguimiento de Clearbit | script-src | Opcional |
cdn.heapanalytics.com | Heap Analytics | script-src | Opcional |
chat.cdn-plain.com | Widget de chat de Plain | script-src | Opcional |
chat-assets.frontapp.com | Widget de chat de Front | script-src | Opcional |
browser.sentry-cdn.com | Seguimiento de errores con Sentry | script-src, connect-src | Opcional |
js.sentry-cdn.com | SDK de JavaScript de Sentry | script-src | Opcional |
Ejemplo de configuración de CSP
Incluye solo los domains de los servicios que usas. Elimina cualquier domain de Analytics que no hayas configurado para tu documentación.
Content-Security-Policy:
default-src 'self';
script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net www.googletagmanager.com cdn.segment.com plausible.io
us.posthog.com tag.clearbitscripts.com cdn.heapanalytics.com chat.cdn-plain.com chat-assets.frontapp.com
browser.sentry-cdn.com js.sentry-cdn.com;
style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com;
font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com;
img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com;
connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com
www.googletagmanager.com cdn.segment.com plausible.io us.posthog.com browser.sentry-cdn.com;
frame-src 'self' *.mintlify.dev;
Configuraciones comunes por tipo de proxy
La mayoría de los servidores proxy inversos permiten agregar encabezados personalizados.
Configuración de Cloudflare
Crea una regla de transformación de encabezados de respuesta:
- En tu dashboard de Cloudflare, ve a Rules > Overview.
- Selecciona Create rule > Response Header Transform Rule.
- Configura la regla:
- Modify response header: Set static
- Header name:
Content-Security-Policy
- Header value:
default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com; frame-src 'self' *.mintlify.dev;
- Publica la regla.
Configuración de AWS CloudFront
Agrega una política de encabezados de respuesta en CloudFront:
{
"ResponseHeadersPolicy": {
"Name": "MintlifyCSP",
"Config": {
"SecurityHeadersConfig": {
"ContentSecurityPolicy": {
"ContentSecurityPolicy": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com; frame-src 'self' *.mintlify.dev;",
"Override": true
}
}
}
}
}
Agrega en tu vercel.json:
{
"headers": [
{
"source": "/(.*)",
"headers": [
{
"key": "Content-Security-Policy",
"value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com; frame-src 'self' *.mintlify.dev;"
}
]
}
]
}
Identifica infracciones de la CSP en la consola de tu navegador:
- Abre las herramientas de desarrollador de tu navegador.
- Ve a la pestaña Console.
- Busca errores que empiecen por:
Content Security Policy: The page's settings blocked the loading of a resource
Refused to load the script/stylesheet because it violates the following Content Security Policy directive
Refused to connect to because it violates the following Content Security Policy directive