Traitement des données personnelles
Le tag remplace les informations suivantes avant qu’elles ne soient collectées :
- les tokens JWT dans les URLs, remplacés par
CS_ANONYMIZED_JWT
- les adresses email dans les URLs, les erreurs personnalisées, les erreurs JavaScript, les dynamic vars, les custom vars, les éléments cliqués et dans le HTML du Session Replay, remplacés par
CS_ANONYMIZED_EMAIL
- les numéros de carte bancaire dans les éléments cliqués et dans le HTML du Session Replay, remplacés par
CS_ANONYMIZED_PII
Données personnelles et HTML (Session Replay)
Section titled Données personnelles et HTML (Session Replay)Une session sera enregistrée pour le Session Replay si :
- La fonctionnalité
Session Replay
est activée pour votre compte. - Le seuil défini par le paramètre
Session Replay Recording Rate
n’est pas dépassé.
Pour que le contenu HTML soit envoyé, toutes les conditions suivantes doivent être vérifiées :
- L’utilisateur n’a pas opt-out.
- La session est trackée.
- Le navigateur est compatible.
- La session est marquée comme “Enregistrée par le Session Replay”, via l’utilisation du cookie
_cs_s
- voir la liste complète des cookies.
Options d’enregistrement du Session Replay
Section titled Options d’enregistrement du Session ReplayLorsque le Session Replay est activé et que la session utilisateur est enregistrée, le contenu HTML de la page est envoyé après chaque pageview (naturelle ou artificielle) et chaque mise à jour du DOM (seuls les éléments mis à jour sont envoyés).
L’automasking est désactivé
Section titled L’automasking est désactivé- La valeur des éléments
<input>
de typetext
,email
,password
,search
,tel
,url
et les éléments<input>
sans attributtype
sont remplacés par des points avant l’envoi du HTML, - Tous les chiffres des éléments
<input>
avec un typenumber
sont remplacés par 0, - Le contenu des éléments
<textarea>
est remplacé par des points avant l’envoi du HTML, - Le contenu des éléments
<script>
est supprimé, - À part les exceptions ci-dessus, tout le contenu HTML est envoyé, l’élément
<head>
compris, - Le contenu de tous les éléments marqués avec le data attribute
data-cs-mask
est supprimé (voir l’exemple ci-après).
L’automasking est activé
Section titled L’automasking est activé- La valeur des éléments
<input>
de typetext
,email
,password
,search
,tel
,url
et les éléments<input>
sans attributtype
sont remplacés par des points avant l’envoi du HTML, - Tous les chiffres des éléments
<input>
avec un typenumber
sont remplacés par 0, - Le contenu des éléments
<textarea>
est remplacé par des points avant l’envoi du HTML, - Le contenu de tous les éléments marqués avec l’attribut de données (data attribute)
data-cs-mask
est supprimé (voir l’exemple ci-après). - Le contenu de tous les éléments marqués avec l’attribut de données (data attribute)
data-cs-capture
est collecté et affiché sauf s’il s’agit d’un élément<input>
ou<textarea>
. - Tous les caractères textuels des éléments qui sont envoyés sont remplacés par “A”.
- Les attributs qui ne sont pas liés au layout sont supprimés - seuls
id
,class
,style
,src
,srcset
,href
,rel
ettype
sont conservés.
Masquer le contenu des pages d’après leur URL
Section titled Masquer le contenu des pages d’après leur URLLorsque votre site affiche des données personnelles sur un ensemble de pages défini, vous pouvez décider d’appliquer l’auto-masking sur ces pages seulement, pour ne pas avoir à masquer ces données sur l’ensemble du site.
Nous proposons deux options :
- Anonymiser toutes les pages sauf… : Toutes les pages sont masquées à l’exception de celles validant une expression régulière.
- Désanonymiser toutes les pages sauf… : Tout le contenu des pages collectées sera supprimé à l’exception des pages validant une expression régulière.
Ces options doivent être activées par votre Implementation Manager.
Bloquer l’enregistrement de certaines pages (Session Replay)
Section titled Bloquer l’enregistrement de certaines pages (Session Replay)Utilisez la commande excludeURLforReplay
pour bloquer l’enregistrement de certaines pages d’après leur URL.
Cette commande est utile dans plusieurs cas :
- Certains enregistrements pour le Session Replay causent des problèmes de performance (lorsque la page contient un nombre important d’images ou de vidéos, par exemple) — vous pouvez bloquer leur enregistrement jusqu’à la résolution du problème,
- Des données personnelles (PII) ont été exposées,
- Vous souhaitez bloquer l’enregistrement de parties complètes de votre site.
Cette commande ne bloque pas les page views, simplement les enregistrements.
Supprimer du contenu ou des données personnelles du HTML enregistré
Section titled Supprimer du contenu ou des données personnelles du HTML enregistréDeux approches sont possibles :
- Utiliser le Contentsquare Personal Data Selector
- Tagger les éléments du DOM
Personal Data Selector
Section titled Personal Data SelectorChaque élément du DOM à masquer doit être identifié par un sélecteur CSS. Ces sélecteurs sont envoyés à l’API Contentsquare sous la forme d’un objet JavaScript. Le contenu de ces éléments sera donc supprimé de l’enregistrement.
L’objet contenant les sélecteurs CSS pour le texte et les attributs doit être envoyé à l’API Contentsquare comme dans cet exemple, avant le chargement du Tag principal :
La structure du PII Object
est la suivante :
-
PIISelectors
: Liste des sélecteurs CSS séparés par des virgules, qui permet aux éléments correspondants du DOM d’être masqués par le tag. -
Attributes
: Cette clé permet de supprimer les attributs sur les éléments du DOM qui correspondent aux sélecteurs CSS. Vous pouvez utiliser un tableau pour les noms des attributs comme dans l’exemple ci-dessus.
L’utilisation des deux clés PII Selectors
et Attributes
n’est pas obligatoire : vous pouvez utiliser des sélecteurs d’éléments complets, des sélecteurs d’attributs spécifiques, ou bien les deux, au sein du même objet :
Tagger les éléments du DOM
Section titled Tagger les éléments du DOMPour exclure du contenu HTML de la page à enregistrer, ajoutez l’attribut data-cs-mask
sur les éléménets HTML concerné(s) :
Leur contenu est supprimé du navigateur avant d’être envoyé vers Contentsquare :
Vous pouvez également ajouter l’attribut data-cs-mask
avec du JavaScript à condition de le faire avant l’envoi d’une pageview.
Les événements sur des éléments HTML supprimés — Les événements (click, hover, etc.) seront toujours collectés et envoyés vers les serveurs Contentsquare même si les éléments visés ont été supprimés. Ils seront visibles dans l’application en utilisant Live Resources.
Afficher du contenu dans une page HTML intégralement masquée
Section titled Afficher du contenu dans une page HTML intégralement masquéeDeux méthodes sont à votre disposition :
- Utiliser le Contentsquare Personal Data Selector
- Tagger les éléments du DOM
Personal Data Selector
Section titled Personal Data SelectorChaque élément du DOM à afficher est identifié par un sélecteur CSS. Ces sélecteurs sont envoyés à l’API Contentsquare sous la forme d’un objet JavaScript. Le contenu de ces éléments sera donc affiché dans le replay.
La chaîne de caractères qui contient les sélecteurs CSS séparés par des virgules, pour le texte et les attributs doit être envoyée à l’API Contentsquare, avant le chargement du Tag principal comme dans cet exemple :
Tagger les éléments du DOM
Section titled Tagger les éléments du DOMPour afficher un élément HTML dans une page intégralement masquée, ajoutez l’attribut data-cs-capture
sur les élements HTML :
Le contenu de cet élément est capturé comme tel :
Vous pouvez également ajouter cet attribut avec du JavaScript à condition de le faire avant l’envoi d’une pageview.
Tester le Session Replay
Section titled Tester le Session ReplayPrerequisites
Section titled Prerequisites- Avoir installé Google Chrome.
- Téléchargez l’extension Chrome Contentsquare Tracking Setup Assistant ↗
- Masquez des éléments du replay en utilisant les sélecteurs CSS ou l’attribut
data-cs-mask
— les éléments<input>
sont pas capturées par défaut, à l’exception des listes déroulantes, qui doivent être masquées. - Activez le masking de la session.
- Si vous nous avez déjà fourni une liste de vos adresses IP internes/de bureau pour que nous les ajoutions à notre liste d’exclusion, informez votre Implementation Manager ou Success Manager Contentsquare afin que nous puissions mettre temporairement en pause cette liste d’exclusion. Sinon, les sessions de tests à partir de ces IPs ne seont pas collectées dans Contentsquare.
Durant les tests
Section titled Durant les tests-
Démarrez un parcours sur votre site web, comprenant les éléments qui seront masqués.
-
Dans l’extension Contentsquare Tracking Setup Assistant extension, sélectionnez
Turn off automasking
afin que le masking ‘AAA’ ne s’applique pas à votre session locale. -
Sélectionnez
Collected for Session Replay
pour activer l’enregistrement du replay pour votre session. -
Sélectionnez
Trigger testing pageEvent
pour créer l’événement de pageSR Testing
identifiant votre session courante. -
Assurez-vous que les éléments à masquer sont visibles tout au long de votre parcours de test. Si nécessaire, saisissez des informations personnelles fictives. Vous pourrez vérifier qu’elles ont effectivement été masquées dans le replay.
-
Lorsque vous avez terminé le parcours, fermez l’onglet de session ou supprimez vos cookies.
-
Regardez le replay en portant attention aux données personnelles :
- ❌ Si des données personnelles apparaissent, recommencez la procédure de test.
- ✅ Si aucune donnée personnelle n’est présente, partagez vos résultats avec votre Implemenatation Manager qui pourra désactiver le masking ‘AAA’ après vérification.
Suivre les requêtes Session Replay
Section titled Suivre les requêtes Session ReplayLe contenu HTML est envoyé via une requête à l’un des endpoints ci-dessous, selon la région où vos données sont stockées :
https://k.aeu1.contentsquare.net/{apiVersion}/recording
https://k.aus1.contentsquare.net/{apiVersion}/recording
https://k.eu1.az.contentsquare.net/{apiVersion}/recording
https://k.us1.az.contentsquare.net/{apiVersion}/recording
https://k.ba.contentsquare.net/{apiVersion}/recording
https://k.bf.contentsquare.net/{apiVersion}/recording
https://k.aa.contentsquare.net/{apiVersion}/recording
https://k.af.contentsquare.net/{apiVersion}/recording
La requête est envoyée avec le cookie _cs_s
dont la valeur se termine par .3
.
Cette requête contient l’intégralité du DOM.
Bloquer des données personnelles dans les URLs
Section titled Bloquer des données personnelles dans les URLsDes données personnelles ne sont pas seulement susceptibles d’apparaître dans le contenu HTML.
Pour une page donnée, vous devez également masquer les données personnelles qui peuvent se trouver dans :
Des données non masquées peuvent également être exposées dans le module Error Analysis.
Supprimer des données personnelles dans l’URL de la page courante
Section titled Supprimer des données personnelles dans l’URL de la page courantePour supprimer des données personnelles dans l’URL de la page courante, vous devez réécrire l’URL du pageview, et la masquer, avant que le Tag ne la collecte, en utilisant la commande setPath
.
La commande setPath
prend en paramètre le nouveau chemin à collecter en tant qu’URL, par le Tag.
Cette commande doit être déclenchée sur toutes les pages où l’URL contient des informations personnelles, avant le chargement du Tag. Seul le chemin (path) doit être configuré, pas l’URL complète.
URL avant masking | URL après masking |
---|---|
https://www.contentsquare.com/users/jon.snow | https://www.contentsquare.com/users/CS_ANONYMIZED_USER_ID |
https://www.contentsquare.com/cartpage/users/jon.snow | https://www.contentsquare.com/users/CS_ANONYMIZED_USER_ID |
Supprimer des données personnelles dans les paramètres d’URL
Section titled Supprimer des données personnelles dans les paramètres d’URLLorsque des données personnes apparaissent les paramètres de requête, utilisez la commande setQuery
pour remplacer la query string dans l’URL par une version masquée.
La commande setQuery
prend en paramètre la nouvelle query string à afficher dans l’URL. Cette commande spécifie au Tag de masquer tout ce qui suit le caractère ?
dans l’URL.
Cette commande doit être déclenchée sur toutes les pages où l’URL contient des informations personnelles, avant le chargement du Tag. Seule la query string doit être configurée, pas l’URL complète.
Exemple
Section titled ExempleURL avant masking | URL après masking |
---|---|
https://www.mysite.com/us/makeup/valentines-day/?user_id=jon.snow&address=castle.black | https://www.mysite.com/us/makeup/valentines-day/?user_id=CS_ANONYMIZED_USER_NAME&address=CS_ANONYMIZED_ADDRESS |
https://www.mysite.com/us/makeup/valentines-day/?campaign=valentinesday_feb_2021&user_id=jon.snow&address=castle.black | https://www.mysite.com/us/makeup/valentines-day/?user_id=CS_ANONYMIZED_USER_NAME&address=CS_ANONYMIZED_ADDRESS |
Personnalisez le masking selon le type de paramètre à remplacer, afin que le résultat soit plus explicite :
CS_ANONYMIZED_USER_ID
CS_ANONYMIZED_EMAIL
CS_ANONYMIZED_ADDRESS
…et ainsi de suite.
Masquer les données personnelles dans le referrer
Section titled Masquer les données personnelles dans le referrerMême lorsqu’elles sont masquées dans les URLs et les paramètres de requête, les données personnelles se propagent dans la page suivante du parcours utilisateur via le referrer
↗ du navigateur web. Pour ce cas d’usage, utilisez les commandes préfixées referrer:
ci-dessous afin de les masquer.
Dans l’URL
Section titled Dans l’URLPrenons l’exemple de ce parcours:
- L’utilisateur navigue de
https://www.example.com/users/123456/products/ABCDEF
vershttps://www.example.com/
. - Un pageview est envoyé sur
https://www.example.com/
. - La valeur du referrer dans le navigateur et la requête pageview est
https://www.example.com/users/123456/products/ABCDEF
.
Pour masquer les données personnelles dans l’URL du referrer, utilisez la commande referrer:maskUrl
:
La valeur des referrer dans les requêtes pageview seront :
https://www.example.com/users/CS_ANONYMIZED_USER_ID/products/CS_ANONYMIZED_PRODUCT_ID
https://www.example.com/account/cancelOrder/CS_ANONYMIZED_ORDER_ID
https://www.example.com/order/CS_ANONYMIZED_ORDER_ID/merge/CS_ANONYMIZED_ORDER_ID
Dans les paramètres de la requête
Section titled Dans les paramètres de la requêtePrenons l’exemple de ce parcours:
- L’utilisateur navigue de
https://www.example.com/confirmation?firstname=jon&lastname=snow
vershttps://www.example.com/
. - Un pageview est envoyé sur
https://www.example.com/
. - La valeur du referrer dans le navigateur et la requête pageview est
https://www.example.com/confirmation?firstname=jon&lastname=snow
.
Pour masquer les données personnelles dans les paramètres de la requête du referrer, utilisez la commande referrer:removeQueryString
:
La valeur du referrer dans la requête pageview pour la page https://www.example.com/
sera :
https://www.example.com/?
Supprimer des données personnelles dans les erreurs d’API
Section titled Supprimer des données personnelles dans les erreurs d’APIUtilisez la commande networkRequest:maskUrls
pour réécrire des URLs avant que le Tag ne collecte les erreurs d’API et l’URL de la requête.
La commande reçoit en paramètre un ou plusieurs patterns de masking à appliquer à l’URL cotenant des données personnelles. Ces patterns peuvent matcher l’URL complète de la page ou une partie.
Les patterns incluent des fragments d’URL à masquer. Ils doivent être passés comme des variables préfixés par ”:”.
Ces variables sont remplacées par le texte CS_ANONYMIZED_{FRAGMENT}
:
:user_id
devientCS_ANONYMIZED_USER_ID
:address
devientCS_ANONYMIZED_ADDRESS
:email
devientCS_ANONYMIZED_EMAIL
Cette commande doit être déclenchée sur toutes les pages contenant des données personnelles et qui appellent l’API Contentsquare, avant le chargement du Tag.
Exemple
Section titled ExempleURL avant masking | URL après masking |
---|---|
https://api.net/order/:order_id/merge/:order_id | https://api.net/order/CS_ANONYMIZED_ORDER_ID/merge/CS_ANONYMIZED_ORDER_ID |
https://api.net/order/:order_id/item | https://api.net/order/CS_ANONYMIZED_ORDER_ID/item |
https://www.api.nl/nl/ajax/nfs/account/cancelOrder/:order_id | https://www.api.nl/nl/ajax/nfs/account/cancelOrder/CS_ANONYMIZED_ORDER_ID |
Supprimer des données personnelles dans les Éléments cliqués
Section titled Supprimer des données personnelles dans les Éléments cliquésQuand la collection des éléments cliqués est activée et que la session utilisateur est enregistrée, le Tag collecte le contenu textuel des boutons et des liens qui ont été cliqués par l’utilisateur en tant que donnée d’analyse supplémentaire (voir /events
request).
L’automasking est désactivé
Section titled L’automasking est désactivéL’élément cliqué est collecté à moins qu’il soit masqué via l’attribut data-cs-mask
.
L’automasking est activé
Section titled L’automasking est activéL’élément cliqué n’est pas collecté à moins qu’il soit capturé via l’attribut data-cs-capture
.
Vous pouvez aussi masquer des élements précis sur la page web. Cette option de masking est prioritaire à la configuration d’automasking
. Pour plus d’informations, voir la section Personal Data Selector.
Controlled Exposure
Section titled Controlled ExposureLe tag Contentsquare ne recueille pas le texte saisi dans les champs de type input
ou textarea
.
Si vous avez besoin d’afficher les données personnelles d’un utilisateur, telles que les adresses d’expédition/de livraison, les noms, les numéros de téléphone, les adresses électroniques, le texte dans un champ de formulaire…, vous pouvez utiliser notre mode de collecte et de chiffrement.
Le mode “collecte et chiffrement” permet de collecter, de stocker et d’afficher le texte d’un champ input
, d’un champ textarea
ou de tout autre élément d’une page qui est généralement masqué par le tag, avant d’être envoyé à nos serveurs.
Collecte et chiffrement des données personnelles du code HTML collecté
Section titled Collecte et chiffrement des données personnelles du code HTML collectéIl existe deux méthodes pour collecter et chiffrer les données personnelles à partir du code HTML collecté :
- Utiliser le “Encryption Selector” de Contentsquare
- Tagger les éléments du DOM contenant la donnée personnelle
Encryption Selector
Section titled Encryption SelectorChaque élément du DOM à collecter et à chiffrer est identifié par son sélecteur CSS. Ces sélecteurs sont transmis à l’API par l’intermédiaire d’un objet JavaScript. Le contenu de l’élément identifié est alors chiffré et collecté pour les replays.
L’objet suivant, qui contient des sélecteurs CSS pour le texte doit être transmis à l’API comme suit, avant de déclencher le tag principal :
Tagging des éléments du DOM
Section titled Tagging des éléments du DOML’attribut data-cs-encrypt
peut être ajouté à un champ de saisie, à un champ textuel ou à tout autre élément.
Au lieu d’être masqué, le texte présent dans ce champ sera chiffré, stocké et mis à disposition pour être exposé dans des conditions spécifiques.
Le processus de chiffrement s’effectue sur la propriété innerText
de l’élément tagué. Il ne s’applique pas aux éléments imbriqués : le texte de l’élément imbriqué ne sera ni masqué ni chiffré. Veillez à ajouter l’attribut data-cs-encrypt
sur les éléments les plus granulaires qui doivent être collectés…
Vous pouvez également ajouter l’attribut data-cs-encrypt
avec JavaScript, à condition de le faire avant l’envoi d’une page.
Chiffrement des données
Section titled Chiffrement des donnéesPour utiliser Controlled Exposure, toutes les données à collecter doivent être chiffrées. Pour ce faire, vous devrez obtenir une combinaison de clés de chiffrement :
- Clé publique : utilisée par le tag pour chiffrer les données.
- Clé privée : utilisée par l’application Contentsquare pour le déchiffrement.
Comment générer la paire de clés
Section titled Comment générer la paire de clésOption 1: Avec un script Google Chrome
Section titled Option 1: Avec un script Google Chrome-
Copiez le script suivant
-
Coller le script dans la console Chrome.
-
Appuyez sur Entrée sur votre clavier.
Option 2: Avec OpenSSL ou OpenSSH
Section titled Option 2: Avec OpenSSL ou OpenSSHSur Linux/Mac, vous pouvez ouvrir OpenSSL :
Sur Windows vous devrez [installer WSL] (https://docs.microsoft.com/fr-fr/windows/wsl/install ↗).
Comment ajouter une clé publique dans Contentsquare
Section titled Comment ajouter une clé publique dans Contentsquare- Allez dans la Console Contentsquare > Choisissez votre compte > Choisissez votre projet > Allez dans l’onglet “Encryption management”.
- Cliquez sur “Entrer une clé publique”.
- Collez votre clé publique.
- Cliquez sur “Sauvegarder votre clé publique”.
Dé-masquer le texte à l’écran dans Contentsquare
Section titled Dé-masquer le texte à l’écran dans Contentsquare- Sélectionnez l’icône “clé” et choisissez “Dé-masquer le texte à l’écran”.
- Saisissez la clé privée et sélectionnez déchiffrer (tous les replays seront exposés).
User identifier
Section titled User identifierLa fonctionnalité User Identifier permet de rechercher des replays appartenant à des utilisateurs spécifiques, grâce à un identifiant unique. Vous avez ainsi la possibilité de chercher et d’accéder à toutes les sessions associées à cet identifiant, par exemple john@gmail.com
sur la plage sélectionnée. Cette fonctionnalité est particulièrement utile en cas de commentaires ou de plaintes d’utilisateurs.
L’identifiant utilisateur peut être un nom d’utilisateur, un numéro de compte, une adresse e-mail, un numéro de téléphone, un ID client, ou l’ID d’un programme de fidélité. L’identifiant est imédiatement haché avec une fonction à sens unique avant d’être envoyé à Contentsquare.
Lorsque vous filtrez les Sessions Replay avec un identifiant utilisateur dans Contentsquare, la même fonction de hachage est utilisée et les deux hashs sont comparés afin de trouver les replays qui correspondent à l’identifiant utilisateur.
Implémentation du User Identifier
Section titled Implémentation du User Identifier-
Choisir le bon User Identifier : Optez pour un identifiant unique tel que l’adresse électronique, le nom d’utilisateur ou le numéro de compte client qui est accessible sur le site.
-
Collecte des User Identifiers: Pour collecter le User Identifier, envoyez un événement de page via la fonction
trackPageEvent
avec le préfixe@user-identifier@
:Ou si vous tirez le User Identifier de votre data layer :
La valeur du user identifier est limitée à 100 caractères.