Passer au contenu principal
La Content Security Policy (CSP) est une norme de sécurité qui aide à prévenir les attaques de cross-site scripting (XSS) en contrôlant les ressources qu’une page web est autorisée à charger. Mintlify fournit une CSP par défaut qui protège la plupart des sites. Si vous hébergez votre documentation derrière un reverse proxy ou un pare-feu qui remplace la CSP par défaut, vous devrez peut-être configurer les en-têtes CSP pour que les fonctionnalités fonctionnent correctement.

Directives CSP

Les directives CSP suivantes permettent de contrôler quelles ressources peuvent être chargées :
  • script-src : contrôle quels scripts peuvent être exécutés
  • style-src : contrôle quelles feuilles de style peuvent être chargées
  • font-src : contrôle quelles polices peuvent être chargées
  • img-src : contrôle quelles images, icônes et logos peuvent être chargés
  • connect-src : contrôle quelles URL peuvent être utilisées pour les appels à l’API et les connexions WebSocket
  • frame-src : contrôle quelles URL peuvent être intégrées dans des frames ou iframes
  • default-src : valeur de repli pour les autres directives lorsqu’elles ne sont pas explicitement définies

Liste blanche de domaines

DomaineFinalitéDirective CSPObligatoire
d4tuoctqmanu0.cloudfront.netCSS et polices KaTeXstyle-src, font-srcObligatoire
*.mintlify.devContenu de la documentationconnect-src, frame-srcObligatoire
*.mintlify.comDashboard, API, proxy Analyticsconnect-srcObligatoire
leaves.mintlify.comAPI de l’Assistantconnect-srcObligatoire
d3gk2c5xim1je2.cloudfront.netIcônes, images, logosimg-srcObligatoire
d1ctpt7j8wusba.cloudfront.netFichiers de version et de publication Mintconnect-srcObligatoire
mintcdn.comImages, faviconsimg-src, connect-srcObligatoire
*.mintcdn.comImages, faviconsimg-src, connect-srcObligatoire
api.mintlifytrieve.comAPI de rechercheconnect-srcObligatoire
cdn.jsdelivr.netRessources d’émojis pour les images OGscript-src, img-srcObligatoire
fonts.googleapis.comGoogle Fontsstyle-src, font-srcOptionnel
www.googletagmanager.comGoogle Analytics/GTMscript-src, connect-srcOptionnel
cdn.segment.comSegment Analyticsscript-src, connect-srcOptionnel
plausible.ioPlausible Analyticsscript-src, connect-srcOptionnel
us.posthog.comPostHog Analyticsconnect-srcOptionnel
cdn.getkoala.comKoala Analyticsscript-srcOptionnel
tag.clearbitscripts.comSuivi Clearbitscript-srcOptionnel
cdn.heapanalytics.comHeap Analyticsscript-srcOptionnel
chat.cdn-plain.comWidget de chat Plainscript-srcOptionnel
chat-assets.frontapp.comWidget de chat Frontscript-srcOptionnel
browser.sentry-cdn.comSuivi des erreurs Sentryscript-src, connect-srcOptionnel
js.sentry-cdn.comSDK JavaScript Sentryscript-srcOptionnel

Exemple de configuration CSP

Incluez uniquement les domains des services que vous utilisez. Supprimez tout domain Analytics que vous n’avez pas configuré pour votre documentation.
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 cdn.getkoala.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;
connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com
api.mintlifytrieve.com www.googletagmanager.com cdn.segment.com plausible.io us.posthog.com browser.sentry-cdn.com;
frame-src 'self' *.mintlify.dev;

Configurations courantes selon le type de proxy

La plupart des proxies inverseurs prennent en charge l’ajout d’en-têtes personnalisés.

Configuration de Cloudflare

Créez une règle de transformation des en-têtes de réponse :
  1. Dans votre Dashboard Cloudflare, accédez à Rules > Overview.
  2. Sélectionnez Create rule > Response Header Transform Rule.
  3. Configurez la règle :
  • 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; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev;
      
  1. Déployez la règle.

Configuration de AWS CloudFront

Ajoutez une stratégie d’en-têtes de réponse dans 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; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev;",
        "Override": true
        }
      }
    }
  }
}

Configuration de Vercel

Ajoutez ceci à votre 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; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com api.mintlifytrieve.com; frame-src 'self' *.mintlify.dev;"
        }
      ]
    }
  ]
}

Dépannage

Identifiez les violations de la CSP dans la console de votre navigateur :
  1. Ouvrez les outils de développement de votre navigateur.
  2. Accédez à l’onglet Console.
  3. Recherchez les erreurs commençant par :
    • 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
I