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 applique une CSP par défaut sur tous les sites de documentation hébergés. 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 certaines fonctionnalités fonctionnent correctement.

CSP par défaut

Mintlify envoie la politique suivante dans l’en-tête Content-Security-Policy de chaque page des sites de documentation hébergés :
L’en-tête inclut également les directives frame-ancestors et form-action, qui contrôlent où votre site peut être intégré et vers où les formulaires peuvent être envoyés. Par défaut, ces directives sont :
La directive frame-ancestors par défaut empêche d’autres domaines d’intégrer votre site dans une iframe. Pour intégrer votre documentation dans votre propre application, consultez Le site de documentation refuse de se charger dans une iframe. La politique par défaut autorise les ressources de n’importe quelle origine HTTPS, de sorte que la plupart des scripts personnalisés, contenus intégrés, polices et outils d’analytics fonctionnent sans modification. Les navigateurs bloquent les ressources que la politique n’autorise pas :
  • Ressources HTTP : les scripts, styles, polices et autres ressources doivent être chargés via HTTPS. Les navigateurs bloquent les connexions vers des URL HTTP non chiffrées, y compris les serveurs de développement locaux tels que http://localhost:8545.
  • Scripts blob et data : les navigateurs bloquent les scripts chargés depuis des URL blob: ou data:. Certains chargeurs de balises tiers utilisent ce procédé.
  • Plugins : les navigateurs bloquent les éléments <object> et <embed>.
  • Workers cross-origin : les web workers doivent être chargés depuis votre domaine de documentation ou depuis une URL blob:.
Si un script personnalisé ou une intégration cesse de fonctionner, recherchez les violations CSP dans la console de votre navigateur. Consultez Dépannage. Chargez la ressource via HTTPS ou utilisez un chargeur qui ne dépend pas de scripts blob:.

Directives CSP

Les directives CSP suivantes contrôlent quelles ressources une page peut charger :
  • script-src : contrôle les scripts pouvant s’exécuter
  • style-src : contrôle les feuilles de style pouvant se charger
  • font-src : contrôle les polices pouvant se charger
  • img-src : contrôle les images, icônes et logos pouvant se charger
  • connect-src : contrôle les URL auxquelles il est possible de se connecter pour les appels à l’API et les connexions WebSocket
  • frame-src : contrôle les URL pouvant être intégrées dans des frames ou des iframes
  • default-src : valeur de repli pour les autres directives lorsqu’elles ne sont pas explicitement définies

Liste d’autorisation des domaines

Exemple de configuration CSP

Incluez uniquement les domains des services que vous utilisez. Supprimez tous les domains d’Analytics que vous n’avez pas configurés pour votre documentation.

Configurations courantes selon le type de proxy

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

Configuration 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:
  1. Déployez la règle.

Configuration de AWS CloudFront

Ajoutez une stratégie d’en-têtes de réponse dans CloudFront :

Configuration de Vercel

Ajoutez ceci à votre vercel.json :

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 des 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