La référence de directive CSP couvre tous les champs de directives disponibles dans les paramètres de politique de sécurité de contenu de Document360, ainsi que les meilleures pratiques pour les configurer, les méthodes de test de votre politique et les conseils pour dépanner les ressources bloquées. Utilisez cette référence une fois que vous avez activé CSP et que vous êtes prêt à configurer ou valider votre politique.
Groupes directifs CSP
Les paramètres CSP dans Document360 sont organisés en quatre groupes. Tous les champs acceptent les URL de domaine séparées par virgules dans le format https://example.com.
Politique de code
Ce groupe gère les sources à partir desquelles le code et les ressources de style sont chargées. La directive source par défaut sert de solution de secours pour tout type de ressource qui n’a pas de règle plus spécifique définie.
| Directive | Nom du champ | Description |
|---|---|---|
default-src |
Source par défaut | Définit les domaines de secours autorisés pour tous les types de ressources non couverts par une directive plus spécifique. Une valeur de départ courante est 'self', qui restreint tous les types de ressources non listés à votre propre domaine. |
script-src |
Source du script | Précise quels domaines peuvent servir JavaScript dans votre base de connaissances. Seuls les scripts provenant des sources listées seront exécutés par le navigateur. |
style-src |
Source du style | Spécifie quels domaines peuvent fournir des feuilles de style et du CSS. Empêche l’injection de styles malveillants. |
Contrôle des ressources
Ce groupe contrôle quels domaines externes sont autorisés à fournir des ressources médias et de données telles que des images, des polices, des appels API et des scripts de travailleurs en arrière-plan.
| Directive | Nom du champ | Description |
|---|---|---|
img-src |
Source de l’image | Spécifie les domaines autorisés à charger des images sur votre site de la Knowledge Base. |
font-src |
Source de la police | Spécifie les domaines autorisés à servir les fichiers de police utilisés par votre base de connaissances. |
connect-src |
Connecter la source | Spécifie les domaines auxquels les scripts peuvent se connecter lors d’appels API ou de requêtes réseau (par exemple, fetch, XHR, WebSocket). |
worker-src |
Source ouvrière | Spécifie les domaines autorisés à charger les scripts d’ouvriers en arrière-plan utilisés par votre base de connaissances. |
Intégration et sécurité
Ce groupe contrôle la manière dont votre Knowledge Base intègre le contenu externe et comment il peut lui-même être intégré sur d’autres sites web. Il est particulièrement important pour prévenir les attaques de clickjacking et gérer le contenu tiers tel que les vidéos, widgets et portails.
| Directive | Nom du champ | Description |
|---|---|---|
frame-src |
Source de trame | Spécifie les domaines autorisés à être intégrés comme frames ou iframes dans votre base de connaissances (par exemple, YouTube, Vimeo). |
frame-ancestors |
Ancêtres du cadre | Précise quels domaines sont autorisés à intégrer vos pages de la Base de Connaissances dans leurs propres cadres. Utilisez cela pour éviter les encadrements non autorisés. |
form-action |
Action de forme | Précise les domaines vers lesquels les formulaires soumis par votre base de connaissances peuvent être envoyés. |
object-src |
Source de l’objet | Spécifie les domaines autorisés à charger le contenu des plugins tels que <object> ou <embed> elements. Réglez sur 'none' si cela n’est pas nécessaire. |
Reportage
Le groupe Reporting demande aux navigateurs d’envoyer des rapports de violation à un point de terminaison désigné chaque fois qu’une ressource est bloquée par votre politique. C’est essentiel pour identifier les mauvaises configurations et les tentatives d’attaque potentielles sans perturber votre site.
| Directive | Nom du champ | Description |
|---|---|---|
report-endpoint |
Point de terminaison de rapport | Spécifie l’URL où les navigateurs doivent envoyer des rapports lorsque les ressources sont bloquées par votre CSP. Entrez une ou plusieurs URL de terminaux de rapport séparées par des virgules. |
report-to |
Rapport à | Précise le nom du groupe de signalement utilisé par le navigateur pour envoyer des rapports de violations CSP. Cela doit correspondre à un groupe de rapports défini dans la configuration de rapports de votre site. |
Assurez-vous que les URL des points de terminaison saisies dans les champs de Reporting sont valides et accessibles publiquement avant de les sauvegarder. Le point de terminaison du rapport doit accepter les requêtes POST et répondre par un code d’état 2xx.
Meilleures pratiques
-
Commencez par un code par défaut restrictif — Définissez la source par défaut en
'self'premier. Cela crée une base de base sécurisée où seules les ressources de votre propre domaine sont autorisées, sauf autorisation explicite ailleurs. Ajoutez des domaines spécifiques dans des champs ciblés plutôt que d’élargir la source par défaut. -
Utilisez des directives spécifiques au lieu de listes larges de permis — Plutôt que d’ajouter de nombreux domaines à la source par défaut, utilisez les champs ciblés : source de script, source de trame, source Connect, etc. Cela facilite la maintenance de la police et réduit la surexposition accidentelle.
-
Utilisez les rapports avant d’appliquer — Configurez d’abord le point de terminaison des rapports afin de pouvoir surveiller les ressources bloquées avant que la politique n’affecte vos lecteurs. Examinez les rapports d’infraction pendant plusieurs jours ou semaines avant de resserrer la politique.
-
Utilisez nonce pour les scripts en ligne personnalisés — Utilisez toujours le
{{Document360-Nonce}}Placeholder dans les sections de script HTML personnalisé. Cela permet aux scripts en ligne de confiance de s’exécuter en toute sécurité sans utiliser'unsafe-inline', ce qui compromettrait toute votre politique de script.
Comment tester votre politique de sécurité de contenu
Après avoir configuré et enregistré vos paramètres CSP, vérifiez que la politique fonctionne comme prévu en utilisant l’une des méthodes suivantes.
Méthode 1 : Via la source de la page
- Ouvrez votre site de base de connaissances dans un navigateur.
- Faites un clic droit n’importe où sur la page et sélectionnez Voir la source de la page.
- Appuyez sur Ctrl+F (Windows) ou Cmd+F (Mac) et cherchez
Content-Security-Policy. - Si elle est trouvée, la configuration complète du CSP apparaît à côté de ce terme, confirmant qu’elle est active.
Méthode 2 : Via les outils de développement de navigateurs
- Ouvrez les outils développeurs de votre navigateur (F12 ou clic droit > Inspecter).
- Naviguez jusqu’à l’onglet Réseau .
- Visitez votre base de connaissances et sélectionnez n’importe quelle page demandée.
- Vérifiez le HTML de la page pour la méta-balise CSP.
Méthode 3 : Via des outils en ligne
Vous pouvez également utiliser des outils externes comme securityheaders.com pour analyser la configuration de sécurité de votre site. Puisque Document360 utilise un métaélément plutôt qu’un en-tête de réponse, certains outils peuvent signaler l’absence du CSP au niveau de l’en-tête — ce qui est attendu.
Problèmes courants
La vidéo montre « Ce contenu est bloqué » dans un article mais pas dans un autre
Le domaine qui dessert la vidéo ne figure pas dans votre liste d’attribution Frame source, ou le domaine diffère selon les types d’embed (par exemple, https://www.youtube.com pour les embeds standards versus https://www.youtube-nocookie.com pour les embeds renforcées par confidentialité). Ajoutez les deux à la source Frame.
Une police personnalisée s’affiche incorrectement ou revient à la police système
Les fournisseurs de polices utilisent généralement deux domaines différents — un pour la feuille de style CSS et un pour les fichiers de polices eux-mêmes. Les deux doivent être inscrits. Pour Google Fonts, ajoutez https://fonts.googleapis.com à la source Style et https://fonts.gstatic.com à la source Font.
Le widget de chat se charge mais ne fonctionne pas
Les widgets de chat chargent souvent des scripts, effectuent des appels API et chargent des images provenant de plusieurs domaines. Vérifiez la console du navigateur pour toutes les requêtes bloquées — il peut y en avoir plusieurs. Ajoutez tous les domaines requis aux champs de directives appropriés (source de script, source de connexion, source d’image).
La soumission du formulaire est bloquée
Si un formulaire de votre Base de Connaissances est soumis à un service externe, ajoutez le domaine de ce service au champ d’action du Formulaire.
Les signalements de violations n’arrivent pas au point de terminaison du Signalement
Vérifiez que :
- L’URL du point de terminaison est accessible publiquement (pas derrière un VPN ou un pare-feu).
- Le point de terminaison accepte les requêtes POST et retourne une réponse 2xx.
- Le point de terminaison prend en charge le format de
Content-Type: application/csp-reportrequête. - Si vous utilisez la directive Report to, le groupe de rapports nommé est correctement configuré dans votre infrastructure.
L’outil de validation CSP signale CSP comme manquant
Document360 implémente CSP via un métaélément dans la source de la page, et non via un en-tête de réponse HTTP. Les outils qui ne vérifient que les en-têtes de réponse signaleront CSP comme manquant. Pour confirmer que CSP est activé, consultez la source de la page et recherchez Content-Security-Policy.
Différences entre navigateurs
La plupart des navigateurs modernes (Chrome, Firefox, Edge, Safari) prennent en charge l’élément méta CSP. Différences connues :
frame-ancestorsest ignoré lorsqu’il est diffusé via un métaélément dans certaines anciennes versions de navigateur. Si la protection contre l’embedding de trames est critique, activez également la protection contre les images X.- Safari peut gérer certaines directives CSP différemment de Chrome et Firefox. Testez votre configuration dans Safari si vos utilisateurs sont sur des appareils Apple.
- Les navigateurs très anciens (Internet Explorer 11 et versions inférieures) ne supportent pas CSP. Si vous avez des utilisateurs IE11, CSP sera ignoré silencieusement.
Les projets de base de connaissances privées ne peuvent pas être intégrés dans des iframes. Les cookies d’authentification ne sont pas correctement configurés dans les iframes, ce qui provoque des tentatives répétées de connexion et des erreurs de redirection. Si vous devez intégrer la Base de connaissances dans une autre application, utilisez plutôt un Knowledge base widget .
FAQ
Quelle est la différence entre frame-src et frame-ancestors ?
Ces deux directives contrôlent des directions opposées d’immersion. frame-src contrôle quels domaines externes votre Knowledge Base est autorisé à intégrer (par exemple, une vidéo YouTube dans un article). frame-ancestors contrôle quels domaines externes sont autorisés à intégrer votre base de connaissances dans leurs propres pages.
Comment utiliser les directives de déclaration ?
Saisissez l’URL de votre point de terminaison de reporting dans le champ Terminaison de rapport . Lorsqu’un navigateur bloque une ressource, il envoie un rapport JSON à cette URL. Report to fonctionne parallèlement au point de terminaison Report et spécifie un groupe de reporting nommé préconfiguré dans l’infrastructure de reporting de votre site — utile pour les configurations d’entreprise avec surveillance centralisée de la sécurité.
Que devrais-je ajouter au champ source par défaut ?
Commencez par 'self', ce qui restreint tous les types de ressources non listées à votre propre domaine. Ensuite, ajoutez des domaines spécifiques dans les champs les plus ciblés (source du script, source de l’image, etc.) plutôt que d’élargir la source par défaut. Une source par défaut restrictive avec des exceptions granulaires est plus sécurisée et plus facile à auditer.
Qu’est-ce qu’un rapport de violation CSP et à quoi ressemble ?
Lorsqu’un navigateur bloque une ressource, il envoie une charge utile JSON à votre terminaison de rapport. Un rapport typique ressemble à ceci :
{
"csp-report": {
"document-uri": "https://docs.yourcompany.com/article",
"violated-directive": "script-src 'self'",
"blocked-uri": "https://cdn.example.com/widget.js",
"original-policy": "default-src 'self'; script-src 'self'"
}
}
Le blocked-uri champ vous indique exactement quel domaine ajouter à votre liste de candidats. Le violated-directive champ vous indique quel champ de directive mettre à jour dans les paramètres de Document360.