Content Security Policy (CSP)
Si votre site utilise une Content Security Policy (CSP), vous devez autoriser les sources utilisées par le Tag Contentsquare pour qu'il puisse collecter des données.
Les directives requises sont détaillées par produit. Chaque section présente la politique CSP complète pour ce produit, fondée sur la politique de base Experience Analytics et mettant en évidence les directives qui lui sont spécifiques.
Experience Analytics
Section titled Experience AnalyticsPolitique de base
Section titled Politique de baseLes directives de la politique de base constituent le socle de votre configuration Contentsquare. Elles permettent au tag principal de s'installer et de se charger, et activent les fonctionnalités essentielles telles que la collecte de données, le Session Replay et la gestion des ressources statiques :
Content-Security-Policy: script-src 'unsafe-inline' *.contentsquare.net; img-src *.contentsquare.net; connect-src *.contentsquare.net *.contentsquare.com| Directive | Ce qu'elle autorise | Ce qui ne fonctionne plus sans elle |
|---|---|---|
script-src *.contentsquare.net | Le chargement du tag Contentsquare et des scripts hébergés par Contentsquare qu'il charge à l'exécution (par exemple le widget Voice of Customer) | Le tag ne se charge pas — rien n'est collecté |
script-src 'unsafe-inline' | L'exécution du snippet d'installation inline et de tout code d'implémentation personnalisé que vous ajoutez dans une balise <script> (par exemple pour déclencher des pages vues artificielles, définir des variables personnalisées ou pousser des événements) | Le snippet d'installation et votre code d'implémentation inline sont bloqués — le tag ne s'initialise pas |
img-src *.contentsquare.net | L'envoi des données collectées via des requêtes pixel (image) | Les données collectées ne sont pas envoyées à Contentsquare |
connect-src *.contentsquare.net *.contentsquare.com | L'envoi des données via XMLHttpRequest/fetch, ainsi que la vérification du tag (*.contentsquare.com) | Les données ne sont pas envoyées et la vérification du tag échoue |
Pourquoi script-src 'unsafe-inline' est requis
Section titled Pourquoi script-src 'unsafe-inline' est requisLa directive 'unsafe-inline' est incluse dans notre politique de base pour tenir compte de la façon dont le tag est intégré à votre site, et non de son fonctionnement à l'exécution. Le tag Contentsquare lui-même n'injecte aucun script inline et n'utilise aucun gestionnaire d'événement inline. L'exigence provient plutôt de deux points d'intégration :
- Snippet d'installation : lorsque le tag est ajouté directement à votre HTML sous forme de bloc
<script>inline. - Code d'implémentation personnalisé : lorsque des scripts inline gèrent des événements personnalisés, déclenchent des pages vues artificielles ou définissent des variables personnalisées.
Supprimer 'unsafe-inline' pour les CSP strictes
Section titled Supprimer 'unsafe-inline' pour les CSP strictesSi votre organisation applique une CSP stricte et souhaite supprimer 'unsafe-inline', déplacez le snippet d'installation du tag Contentsquare et le code d'implémentation associé dans un fichier externe, ou sécurisez-les avec un nonce CSP.
Comme la meilleure approche dépend de l'architecture de votre site et de vos outils de déploiement, sa configuration sort du cadre de cette documentation. Vous devriez examiner le workflow de déploiement de votre site avec votre équipe d'ingénierie pour déterminer la meilleure marche à suivre.
La mise en place du tracking cross-domaine n'introduit pas d'exigence 'unsafe-inline'. Comme l'iframe cross-domaine constitue une origine distincte, elle est régie par sa propre politique de sécurité.
Pour activer cette fonctionnalité, ajoutez la directive frame-src pointant vers csxd.<domaine>.
Fonctionnalités optionnelles
Section titled Fonctionnalités optionnellesAjoutez ces directives uniquement si vous utilisez la fonctionnalité correspondante :
| Fonctionnalité | À ajouter à votre CSP | Ce qui ne fonctionne plus sans elle |
|---|---|---|
| Tracking cross-domaine | frame-src csxd.<domaine> — une entrée par hôte cross-domaine, par exemple frame-src csxd.domain1.com csxd.domain2.com. Si vous utilisez l'iframe unique hébergée par Contentsquare, ajoutez plutôt frame-src csxd.contentsquare.net. | Les sessions ne sont pas reliées entre vos domaines |
| Zoning / snapshot depuis l'application Contentsquare | script-src app.contentsquare.com | Les utilisateurs Contentsquare ne peuvent pas créer de zoning ou de snapshot depuis l'application. Aucun impact sur la collecte des données des visiteurs. |
Voice of Customer
Section titled Voice of CustomerVoice of Customer inclut la politique de base et style-src 'unsafe-inline' :
Content-Security-Policy: script-src 'unsafe-inline' *.contentsquare.net; img-src *.contentsquare.net; connect-src *.contentsquare.net *.contentsquare.com; style-src 'unsafe-inline'| Directive | Ce qu'elle autorise | Ce qui ne fonctionne plus sans elle |
|---|---|---|
style-src 'unsafe-inline' | Voice of Customer applique des styles en ligne lors du rendu d'un sondage | Les sondages s'affichent sans leur mise en forme |
Product Analytics
Section titled Product AnalyticsProduct Analytics introduit deux composants d'intégration :
- SDK Heap (
heap.js) : chargé sur vos pages par le tag Contentsquare lorsque votre projet est configuré pour charger également Heap, et servi depuis*.heap-api.com. Si votre projet n'est pas configuré pour charger le SDK Heap, ces hôtes ne sont pas nécessaires. - Visual Labeler : chargé uniquement lorsque votre site est ouvert dans l'application Contentsquare pour le tagging d'événements, et servi depuis
heapanalytics.com.
La politique Product Analytics inclut la politique de base et les directives suivantes :
'unsafe-eval': requise uniquement par le Visual Labeler pour le tagging d'événements dans l'application — jamais par le tag principal, ni pour la collecte de données des visiteurs. Elle ne s'applique que lorsqu'un utilisateur Contentsquare a votre site ouvert dans l'application.app.contentsquare.com: le Visual Labeler s'exécute dans l'application Contentsquare, la directive optionnelleapp.contentsquare.coms'applique donc également.
Content-Security-Policy: script-src 'unsafe-inline' *.contentsquare.net 'unsafe-eval' https://cdn.us.heap-api.com https://heapanalytics.com; img-src *.contentsquare.net https://heapanalytics.com; connect-src *.contentsquare.net *.contentsquare.com https://c.us.heap-api.com https://heapanalytics.com; style-src https://heapanalytics.com; font-src https://heapanalytics.com| Directive | Ce qu'elle autorise | Ce qui ne fonctionne plus sans elle |
|---|---|---|
script-src https://cdn.us.heap-api.com | Le chargement du script de configuration Heap heap_config.js et du script du SDK Heap heap.js | Le SDK Heap ne se charge pas |
script-src https://heapanalytics.com | Le chargement du script du Visual Labeler | Le Visual Labeler ne se charge pas |
script-src 'unsafe-eval' | Le rendu du Visual Labeler | Le Visual Labeler ne s'affiche pas |
img-src https://heapanalytics.com | Le chargement des ressources d'images du Visual Labeler | Les ressources d'images du Visual Labeler ne se chargent pas |
connect-src https://c.us.heap-api.com | L'envoi des événements par le SDK Heap | Les événements du SDK Heap ne sont pas envoyés |
connect-src https://heapanalytics.com | La récupération des paramètres d'environnement par le Visual Labeler | Le Visual Labeler ne peut pas récupérer les paramètres d'environnement |
style-src https://heapanalytics.com | Le chargement des feuilles de style du Visual Labeler | Le Visual Labeler s'affiche sans sa mise en forme |
font-src https://heapanalytics.com | Le chargement des polices personnalisées du Visual Labeler | Le Visual Labeler utilise les polices par défaut |
Content-Security-Policy: script-src 'unsafe-inline' *.contentsquare.net 'unsafe-eval' https://cdn.eu.heap-api.com https://cdn.us.heap-api.com https://heapanalytics.com https://eu.heapanalytics.com; img-src *.contentsquare.net https://heapanalytics.com https://eu.heapanalytics.com; connect-src *.contentsquare.net *.contentsquare.com https://c.eu.heap-api.com https://heapanalytics.com https://eu.heapanalytics.com; style-src https://heapanalytics.com https://eu.heapanalytics.com; font-src https://heapanalytics.com https://eu.heapanalytics.com| Directive | Ce qu'elle autorise | Ce qui ne fonctionne plus sans elle |
|---|---|---|
script-src https://cdn.eu.heap-api.com | Le chargement du script du SDK Heap heap.js | Le SDK Heap ne se charge pas |
script-src https://cdn.us.heap-api.com | Le chargement du script de configuration Heap heap_config.js | Le SDK Heap ne se charge pas |
script-src https://heapanalytics.com https://eu.heapanalytics.com | Le chargement du script du Visual Labeler | Le Visual Labeler ne se charge pas |
script-src 'unsafe-eval' | Le rendu du Visual Labeler | Le Visual Labeler ne s'affiche pas |
img-src https://heapanalytics.com https://eu.heapanalytics.com | Le chargement des ressources d'images du Visual Labeler | Les ressources d'images du Visual Labeler ne se chargent pas |
connect-src https://c.eu.heap-api.com | L'envoi des événements par le SDK Heap | Les événements du SDK Heap ne sont pas envoyés |
connect-src https://heapanalytics.com https://eu.heapanalytics.com | La récupération des paramètres d'environnement par le Visual Labeler | Le Visual Labeler ne peut pas récupérer les paramètres d'environnement |
style-src https://heapanalytics.com https://eu.heapanalytics.com | Le chargement des feuilles de style du Visual Labeler | Le Visual Labeler s'affiche sans sa mise en forme |
font-src https://heapanalytics.com https://eu.heapanalytics.com | Le chargement des polices personnalisées du Visual Labeler | Le Visual Labeler utilise les polices par défaut |

