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.
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
Domaine Finalité Directive CSP Obligatoire d4tuoctqmanu0.cloudfront.netCSS et polices KaTeX style-src, font-srcObligatoire *.mintlify.devContenu de la documentation connect-src, frame-srcObligatoire *.mintlify.comDashboard, API, proxy Analytics connect-srcObligatoire leaves.mintlify.comAPI de l’Assistant connect-srcObligatoire d3gk2c5xim1je2.cloudfront.netIcônes, images, logos img-srcObligatoire d1ctpt7j8wusba.cloudfront.netFichiers de version et de publication Mint connect-srcObligatoire mintcdn.comImages, favicons img-src, connect-srcObligatoire *.mintcdn.comImages, favicons img-src, connect-srcObligatoire api.mintlifytrieve.comAPI de recherche connect-srcObligatoire cdn.jsdelivr.netRessources d’émojis pour les images OG script-src, img-srcObligatoire fonts.googleapis.comGoogle Fonts style-src, font-srcOptionnel www.googletagmanager.comGoogle Analytics/GTM script-src, connect-srcOptionnel cdn.segment.comSegment Analytics script-src, connect-srcOptionnel plausible.ioPlausible Analytics script-src, connect-srcOptionnel us.posthog.comPostHog Analytics connect-srcOptionnel cdn.getkoala.comKoala Analytics script-srcOptionnel tag.clearbitscripts.comSuivi Clearbit script-srcOptionnel cdn.heapanalytics.comHeap Analytics script-srcOptionnel chat.cdn-plain.comWidget de chat Plain script-srcOptionnel chat-assets.frontapp.comWidget de chat Front script-srcOptionnel browser.sentry-cdn.comSuivi des erreurs Sentry script-src, connect-srcOptionnel js.sentry-cdn.comSDK JavaScript Sentry script-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.
Signaler un code incorrect
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 :
Dans votre Dashboard Cloudflare, accédez à Rules > Overview .
Sélectionnez Create rule > Response Header Transform Rule .
Configurez la règle :
Modify response header : Set static
Header name : Content-Security-Policy
Header value :
Signaler un code incorrect
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éployez la règle.
Configuration de AWS CloudFront
Ajoutez une stratégie d’en-têtes de réponse dans CloudFront :
Signaler un code incorrect
{
"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
}
}
}
}
}
Ajoutez ceci à votre vercel.json :
Signaler un code incorrect
{
"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;"
}
]
}
]
}
Identifiez les violations de la CSP dans la console de votre navigateur :
Ouvrez les outils de développement de votre navigateur.
Accédez à l’onglet Console .
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