confidentialité et masquage
Choisissez la stratégie de masquage qui correspond le mieux à vos exigences en matière de confidentialité.
Stratégies de masquage
Session Replay mobile propose deux stratégies de masquage pour équilibrer la protection de la vie privée et l'utilité de la relecture. Votre choix détermine la manière dont les données sensibles sont traitées dans les enregistrements de session.
Stratégie de masquage par défaut
La stratégie de masquage par défaut assure une protection maximale de la vie privée en masquant tous les textes et images sans exception. Choisissez cette stratégie lorsque :
- Votre application traite des données hautement sensibles (santé, services financiers, etc.).
- La conformité réglementaire exige une protection stricte des données
- Vous souhaitez un risque zéro de capture d'informations privées
Ce qui est masqué :
- Tout le texte est remplacé par des astérisques (par exemple, « bonjour » devient « ***** »)
- Toutes les images sont remplacées par des blocs d'espace réservé de mêmes dimensions.
- Les clics et les glissements de l'utilisateur sont toujours enregistrés (sauf si vous les masquez).
Cela garantit que même si vous ajoutez accidentellement du code de démasquage, la stratégie par défaut masquera toujours tout.
Principales limitations de la stratégie de masquage par défaut :
- Les modes de masquage ne sont pas configurables.
- Les masquages en ligne (comme la balise
nr-unmask) sont ignorés. - Les règles de masquage côté serveur sont sans effet.

Différence entre le masquage et le blocage
Il est important de faire la distinction entre le Masquage et le Blocage, car ils traitent les données sensibles différemment dans le replay :
Masquage : remplace du contenu spécifique tout en préservant la mise en page. Le texte devient des astérisques (*) et les images deviennent des blocs d'espace réservé.
Blocage : Crée une superposition noire unie complète couvrant toute la zone d'affichage.
Lorsqu'une vue est bloquée :
Toute la zone d'affichage est masquée dans le replay de session.
Tout le contenu de cette vue est complètement masqué.
Effet en cascade : toutes les sous-vues sont automatiquement bloquées.
Les interactions utilisateur dans cette zone ne sont pas capturées et les éléments visuels restent masqués.
Stratégie de masquage personnalisée
La stratégie de masquage personnalisée vous offre un contrôle précis sur ce qui est masqué et ce qui reste visible. Utilisez cette stratégie lorsque :
- Votre application contient à la fois du contenu public et du contenu sensible.
- Vous devez visualiser des éléments d'interface utilisateur spécifiques pour diagnostiquer efficacement les problèmes.
- Vous souhaitez dévoiler sélectivement des zones non sensibles
Une stratégie personnalisée se compose de :
- Modes de masquage: règles de base de référence pour différents types de contenus (texte, images, interaction)
- Règles de remplacement: Exceptions pour masquer ou dévoiler des composants spécifiques
Pour passer au masquage personnalisé :
Dans l'interface web de New Relic :
- Accédez à Mobile > [votre entité] > Settings > Application > Session Replay
- Dans la section Masking strategy, sélectionnez Custom
- Configurez vos modes de masquage (voir section suivante)
- Vous pouvez également ajouter des règles de remplacement pour des composants spécifiques.

Modes de masquage
Lorsque vous utilisez la stratégie de masquage personnalisée, les modes de masquage établissent le comportement de confidentialité de référence pour votre relecture de session. Ces modes s'appliquent globalement à l'ensemble de votre application, sauf s'ils sont remplacés par des règles spécifiques pour chaque composant.
Pour configurer les modes de masquage :
Dans l'interface web de New Relic :
- Accédez à Mobile > [votre entité] > Settings > Application > Session Replay
- Assurez-vous que la stratégie de masquage Custom est sélectionnée.
- Dans la section Masking modes, activez ou désactivez chaque mode selon vos besoins.
- Les modifications prennent effet immédiatement pour tous les nouveaux enregistrements de session.

Les quatre modes de masquage contrôlent différents types de contenu :
masquer utilisateur saisie du texte
Contrôle si le texte saisi par l'utilisateur dans les champs de saisie est visible dans les rediffusions.
Lorsqu'elle est activée (recommandé) :
- Tous les caractères saisis par l'utilisateur sont remplacés par des astérisques.
- Exemple : l'utilisateur tape « john.doe@email.com» → apparaît comme "******************" dans le replay
- Protège les noms d'utilisateur, les adresses e-mail, les requêtes de recherche, les données de formulaires et autres contenus saisis par l'utilisateur.
En cas de désactivation :
- Le texte saisi par l'utilisateur apparaît exactement tel qu'il a été saisi dans la rediffusion.
- À utiliser uniquement lorsque les champs de saisie contiennent des informations non sensibles.
- Utile pour le débogage des problèmes de validation de formulaires ou de la fonction de recherche
Important
Les champs de mot de passe sont toujours masqués, quel que soit ce paramètre. SecureField (iOS), les types de saisie de mot de passe (Android) et les champs de saisie de texte sécurisés n'afficheront jamais de texte en clair dans les replays.
Paramètre par défaut : Activé dans la stratégie de masquage personnalisée.
Quand désactiver ce mode :
- Barres de recherche publiques où les requêtes ne sont pas personnellement identifiables
- Filtres non sensibles ou sélections de catégories
- Débogage des problèmes de saisie semi-automatique ou de validation des entrants
texte de l'application du masque
Contrôle si le texte affiché par votre application (étiquettes, boutons, en-têtes, contenu) est visible dans les rediffusions.
Lorsque activé :
- Tout le texte statique et dynamique affiché par votre application est remplacé par des astérisques.
- Exemple : l’étiquette « Prénom : » devient « *********** » en replay
- Protège tout texte susceptible de contenir ou de révéler des informations sensibles
En cas de désactivation :
- Tout le texte de l'application apparaît exactement comme l'utilisateur le voit.
- Les étiquettes, les boutons, les titres et le contenu sont parfaitement lisibles.
- Rend les rediffusions beaucoup plus faciles à comprendre et à parcourir
- Essentiel pour identifier les écrans ou fonctionnalités avec lesquels l'utilisateur a interagi.
Paramètre par défaut : Activé dans la stratégie de masquage personnalisée.
Recommandation pour la plupart des applications : désactivez ce mode sauf si vous affichez des informations hautement sensibles. L'affichage du texte de l'interface utilisateur est crucial pour :
- Comprendre les chemins de navigation des utilisateurs
- Identifier sur quels boutons ou fonctionnalités l'utilisateur a cliqué
- Affichage du message d'erreur
- Diagnostic des problèmes de mise en page ou de localisation
- Corrélation des rediffusions avec des fonctionnalités spécifiques de l'application
Gardez ce mode activé lorsque :
- Applications de santé affichant des informations sur les patients
- Applications financières affichant les détails du compte ou les transactions
- Applications contenant du contenu généré par les utilisateurs qui pourrait être sensible
- Les exigences de conformité imposent le masquage de tout le texte affiché
Conseil
Si vous désactivez ce mode mais devez masquer des éléments de texte sensibles spécifiques, utilisez des règles de remplacement pour masquer sélectivement ces composants tout en conservant la visibilité du reste de votre interface utilisateur.
images de masques
Important
Versions minimales de l'agent prenant en charge la capture d'images :
- Agent iOS v7.5.10 (sortie le 15 septembre 2025)
- Agent Android v7.6.9 (sortie le 15 septembre 2025)
- Agent React Native v1.5.10 (sortie le 15 septembre 2025)
Contrôle si les images de votre application sont capturées et affichées lors des replays.
Lorsqu'elle est activée (recommandé) :
- Toutes les images sont remplacées par des blocs d'espace réservé de même dimension.
- espace réservé préserver la structure de mise en page afin que vous puissiez voir les positions des images
- Aucune donnée d'image n'est transmise à New Relic.
- Protège les photos, les photos de profil et les images potentiellement sensibles téléchargées par les utilisateurs.
En cas de désactivation :
- Les images sont capturées, compressées, encodées en base64 et incluses dans la charge utile de relecture.
- Les images apparaissent dans les rediffusions, mais en qualité inférieure à celle vue par l'utilisateur.
- Augmente considérablement les coûts de transmission et de stockage des données
- Permet de diagnostiquer les problèmes liés au chargement, au rendu ou à la mise en page des images.
Éléments importants à prendre en compte lors de la prise de photos
L'activation de la capture d'images a un impact significatif sur l'utilisation des données et les performances :
Utilisation des données: Les images augmentent considérablement la taille de la charge utile de relecture, consommant ainsi beaucoup plus de données utilisateur et votre quota de stockage New Relic.
Qualité: Les images sont fortement compressées côté client afin de minimiser leur impact, ce qui entraîne une qualité inférieure à celle de l'original.
Performances: La capture et la compression d'images peuvent impacter les performances de l'application sur les appareils plus anciens.
Confidentialité: Déterminez si les images peuvent contenir des informations sensibles ou privées.
Désactivez le masquage d'image uniquement lorsque le débogage visuel est essentiel à votre cas d'utilisation.
Paramètre par défaut : Activé dans la stratégie de masquage personnalisée.
Quand désactiver ce mode :
- Diagnostic des échecs de chargement d'images ou des problèmes de rendu
- Recherche des problèmes de mise en page liés aux dimensions des images
- Comprendre l'interaction de l'utilisateur avec les galeries d'images ou le contenu multimédia
- Votre application affiche uniquement des images publiques et non sensibles (icônes, logos, illustrations).
Gardez ce mode activé lorsque :
- Photos de profil ou photos téléchargées par l'utilisateur
- Documents ou captures d'écran réalisées dans l'application
- Imagerie médicale ou imagerie liée aux soins de santé
- Tout contenu visuel généré par l'utilisateur
Masquer les clics et les glissements de l'utilisateur
Permet de contrôler si les interactions tactiles de l'utilisateur sont visualisées dans les rediffusions.
Lorsqu'il est désactivé (recommandé) :
- Les appuis de l'utilisateur apparaissent sous forme de cercles verts sur la relecture
- Les gestes de balayage apparaissent comme des lignes vertes montrant la trajectoire du mouvement.
- Essentiel pour comprendre avec quels éléments d'interface utilisateur les utilisateurs ont interagi.
- Permet d'identifier les problèmes d'utilisabilité, les clics manqués ou les interactions confuses.
Lorsque activé :
- Aucune visualisation par tapotement ou glissement n'apparaît dans la rediffusion.
- L'utilisateur semble naviguer dans votre application sans interactionvisible.
- À utiliser lorsque les schémas tactiles pourraient révéler des informations sensibles.
Conseil
Le clavier du système d'exploitation et les frappes et glissements effectués dessus ne sont jamais capturés dans les replays, quel que soit ce paramètre. Cela assure une protection automatique lors de la saisie de mots de passe et de textes sensibles.
Paramètre par défaut : Désactivé dans la stratégie de masquage personnalisée (les appuis et les glissements sont visibles).
Quand masquer les interactions : Masquer le texte est généralement suffisant, mais masquer les clics/glissements peut s’avérer nécessaire dans les cas suivants :
- Votre application intègre un clavier PIN ou un clavier numérique dont les combinaisons de touches révèlent les codes de sécurité.
- Les schémas de balayage sont utilisés pour l'authentification (verrous à schéma, mots de passe gestuels).
- L'interaction tactile sur des écrans spécifiques pourrait permettre de déduire des choix sensibles (sélection de symptômes médicaux, décisions financières).
Recommandation pour la plupart des applications : Gardez l’interaction visible à :
- Visualisez précisément les zones cliquées par l'utilisateur, y compris les zones non cliquées ou ne répondant pas.
- Comprenez les schémas de navigation et le parcours utilisateur au sein de votre application.
- Identifiez les problèmes d'utilisabilité liés à une petite zone tactile ou à des boutons peu visibles.
- Diagnostiquer les fonctionnalités basées sur les gestes (glisser pour supprimer, tirer pour actualiser, etc.).
configurationde masquage avancée
Utilisez les substitutions de masquage lorsque vous souhaitez que certaines parties de votre application aient des paramètres de masquage différents de ceux de vos modes de masquage spécifiés. Par exemple, si la majorité de votre application ne contient pas de données sensibles, vous pouvez configurer vos modes pour démasquer et spécifier des substitutions afin de masquer uniquement les parties de votre application qui contiennent des données sensibles.
Méthodes de remplacement du masquage
Nous proposons trois façons de créer des règles de remplacement de masquage :
attribut en ligne
Les substitutions de masquage en ligne sont appliquées dans votre code en balisant le composant que vous souhaitez masquer ou démasquer. Vous devrez déployer une nouvelle version de votre application et la faire adopter par l'utilisateur pour que les mises à jour soient appliquées. Elles sont donc à privilégier lorsque vous souhaitez que la supervision de votre processus de contrôle des changements permette de gérer les modifications masquées.
SwiftUI
Utilisez NRConditionalMaskView pour envelopper le contenu qui doit avoir un comportement de masquage spécifique. Ce composant SwiftUI offre un contrôle précis sur le masquage des données dans Session Replay.
Exigences:
iOS 16.0+
Swift 5.0+
Importer:
import SwiftUIimport NewRelicUtilisation de base :
// Mask all text content within this viewNRConditionalMaskView(maskApplicationText: true) {VStack {Text("This text will be masked in session replay")Text("This text will also be masked")}}Démasquer le contenu :
// Explicitly unmask content (useful when parent views have masking enabled)NRConditionalMaskView(maskApplicationText: false) {Text("This text will be visible in session replay")}Masquage basé sur les identifiants :
// Use an identifier to control masking via API or dashboard settingsNRConditionalMaskView(sessionReplayIdentifier: "unmasked-section") {Text("This text masking is controlled by the identifier")}Utilisez
NRConditionalMaskViewpour envelopper le contenu. Vous pouvez utiliser le paramètreblockViewpour masquer complètement une hiérarchie de vues.SwiftUI
// Block all content within this view (renders as a black rectangle)NRConditionalMaskView(blockView: true) {YourSensitiveView()}Dépannage du texte manquant dans SwiftUI
S'il arrive que du texte soit manquant dans le replay, enveloppez toute la zone de l'écran dans un
NRConditionalMaskViewsans paramètres pour résoudre le problème :NRConditionalMaskView {// Your entire screen region content hereYourScreenView()}UIKit
Vous pouvez bloquer des vues en utilisant directement la propriété
blockViewou en utilisant un identifiant d'accessibilité spécifique.En utilisant la propriété :
let sensitiveView = UIView()sensitiveView.blockView = trueUtilisation de l'identifiant d'accessibilité : L'ajout de
nr-blockà l'identifiant déclenchera le comportement de blocage.let sensitiveView = UIView()sensitiveView.accessibilityIdentifier = "nr-block"Paramètres:
maskApplicationText: Lorsquetrue, masquer tout le contenu textuel de la vue. Lorsquefalse, garantit que le texte est visible. Lorsquenil, hérite de parent.maskUserInputText: Lorsquetrue, masquer les champs de saisie utilisateur dans la vue. Lorsquefalse, affiche le contenu saisi. Lorsquenil, hérite de parent.maskAllImages: Lorsquetrue, masquer toutes les images dans la vue. Lorsquefalse, affiche des images. Lorsquenil, hérite de parent.maskAllUserTouches: Lorsquetrue, masquer l'interaction tactile de l'utilisateur dans la vue. Lorsquefalse, affiche l'événement tactile. Lorsquenil, hérite de parent.sessionReplayIdentifier: Identifiant optionnel pour contrôler le masquage viaaddSessionReplayMaskedAccessibilityIdentifier,addSessionReplayUnmaskedAccessibilityIdentifier, ou via le dashboard de l'application New Relic.blockView: Lorsquetrue, toute la zone d'affichage est masquée dans le replay de session. Lorsquefalse, il n'y a aucun comportement bloquant.activated: Lorsquefalse, désactive entièrement la fonctionnalité de masquage pour cette vue. La valeur par défaut esttrue.Exemple avancé - Masquage mixte dans un formulaire :
struct RegistrationForm: View {@State private var firstName = ""@State private var email = ""@State private var password = ""var body: some View {VStack(alignment: .leading, spacing: 16) {// Public form labels remain visibleNRConditionalMaskView(maskApplicationText: false) {Text("Create Your Account").font(.title)}// Personal informationNRConditionalMaskView(sessionReplayIdentifier: "personal-info") {TextField("First Name", text: $firstName)TextField("Email", text: $email)}// Highly sensitive - mask everythingNRConditionalMaskView(sessionReplayIdentifier: "password-section") {SecureField("Password", text: $password)Text("Password must be at least 8 characters")}Button("Sign Up") {// Handle registration}}.padding()}}UIKit
Ajoutez ou ajoutez
nr-maskounr-unmaskauaccessibilityIdentifierduUIViewà masquer ou à démasquer. L'ajout d'un identifiant existant est utile si vous devez conserver un identifiant unique pour les tests automatisés, mais vous devrez probablement mettre à jour vos tests après avoir modifié les valeurs.Exemple d'ajout d'un
accessibilityIdentifier:let myView = UIView()myView.accessibilityIdentifier = "nr-mask"Exemple d'ajout à un
accessibilityIdentifierexistant :let myView = UIView()myView.accessibilityIdentifier = "someExistingId.nr-unmask"
Jetpack Compose
Utilisez les extensions Modifier pour contrôler le comportement de masquage et de blocage dans Jetpack Compose.
Exemple:
// Mask a composableText( text = "Sensitive information", modifier = Modifier.newRelicMask())
// Unmask a composableText( text = "Public information", modifier = Modifier.newRelicUnmask())
// Block a composableText( text = "Sensitive User information", modifier = Modifier.newRelicBlock())Modèles XML
Ajoutez un tag nr-mask,nr-unmask ou nr-block aux vues ou composants à masquer, démasquer ou bloquer.
Exemple:
<EditText android:id="@+id/editTextEmail" android:layout_width="390dp" android:inputType="text" android:tag="nr-mask" android:importantForAutofill="no" />
<EditText android:id="@+id/editTextEmail" android:layout_width="390dp" android:inputType="text" android:tag="nr-unmask" android:importantForAutofill="no" />
<CustomPinView android:id="@+id/editTextEmail" android:layout_width="390dp" android:inputType="text" android:tag="nr-block" android:importantForAutofill="no" />Utilisez les composants <NewRelicMask> et <NewRelicUnMask> pour masquer ou dévoiler des vues ou des composants.
Exemple:
<View> <NewRelicMask> <Text>Sensitive information</Text> </NewRelicMask></View>
<View> <NewRelicUnmask> <Text>Non-sensitive information</Text> </NewRelicUnmask></View>Méthodes de l'API locale
Les substitutions de masquage des méthodes d'API locales sont également appliquées dans votre code au sein de la configuration de l'agent New Relic. Elles sont utiles lorsque les vues cibles possèdent déjà un identifiant unique et que vous souhaitez les gérer dans une liste centralisée au lieu d'étiqueter chaque vue individuellement dans votre code.
SwiftUI
Pour les vues SwiftUI, utilisez le paramètre sessionReplayIdentifier dans NRConditionalMaskView avec ces méthodes :
addSessionReplayMaskedAccessibilityIdentifieraddSessionReplayUnmaskedAccessibilityIdentifierExemple:
// In your app initializationNewRelic.addSessionReplayMaskedAccessibilityIdentifier("sensitive-section")NewRelic.addSessionReplayUnmaskedAccessibilityIdentifier("public-section")// In your SwiftUI viewsNRConditionalMaskView(sessionReplayIdentifier: "sensitive-section") {Text("This will be masked")}NRConditionalMaskView(sessionReplayIdentifier: "public-section") {Text("This will be visible")}UIKit
Masquer ou démasquer les vues en ajoutant leur
classouaccessibilityIdentifieraux méthodes suivantes :addSessionReplayMaskViewClassaddSessionReplayUnmaskViewClassaddSessionReplayMaskViewAccessibilityIdentifieraddSessionReplayUnmaskViewAccessibilityIdentifierExemple:
NewRelic.addSessionReplayMaskViewClass("SecureLabel")NewRelic.addSessionReplayUnmaskViewClass("UnsecureLabel")NewRelic.addSessionReplayMaskViewAccessibilityIdentifier("login")NewRelic.addSessionReplayUnmaskViewAccessibilityIdentifier("editTextEmail")
Jetpack Compose
Utilisez les extensions Modifier pour contrôler le comportement de masquage et de blocage dans Jetpack Compose.
Exemple:
// Mask a composableText( text = "Sensitive information", modifier = Modifier.newRelicMask())
// Unmask a composableText( text = "Public information", modifier = Modifier.newRelicUnmask())
// Block a composableText( text = "Sensitive User information", modifier = Modifier.newRelicBlock())Modèles XML
Masquer ou démasquer les vues en ajoutant leur class ou android:tag aux méthodes suivantes :
addSessionReplayMaskViewClassaddSessionReplayUnmaskViewClassaddSessionReplayMaskViewTagaddSessionReplayUnmaskViewTag
Exemple:
NewRelic.addSessionReplayMaskViewTag("login");NewRelic.addSessionReplayUnmaskViewTag("editTextEmail");NewRelic.addSessionReplayUnmaskViewClass("android.widget.Button");NewRelic.addSessionReplayMaskViewClass("android.widget.TextView");NewRelic.addSessionReplayMaskViewClass("com.yourpackagename.CustomView");Règles côté serveur
Important
Versions minimales des agents prenant en charge les règles côté serveur :
- Agent iOS v7.5.10 (sortie le 15 septembre 2025)
- Agent Android v7.6.9 (sortie le 15 septembre 2025)
- Agent React Native v1.5.10 (sortie le 15 septembre 2025)
Les règles de masquage côté serveur permettent de corriger rétroactivement les erreurs de masquage dans les versions d'applications déjà publiées. Elles prennent effet immédiatement à tous les nouveaux démarrages de session, sans nécessiter de mise à jour de l'application.
Les règles comportent trois éléments :
- Type: Détermine si les composants correspondants doivent être masqués ou non masqués
- identifiant: Spécifie comment vous souhaitez que l'élément cible (par exemple, par classe, tag, etc.)
- Valeur: La valeur de l'identifiant sélectionné auquel la règle s'appliquera.
Par exemple, une règle Mask class android.widget.EditText masquerait tous les champs de texte modifiables par l'utilisateur dans une application Android.

Définissez les paramètres de masquage pour Session Replay mobile dans les paramètres de l'application.
Pour créer une nouvelle règle :
Dans l'interface web de New Relic :
- Accédez à Mobile > [votre entité] > Settings > Application > Session Replay.
- Faites défiler jusqu'à Override rules et cliquez sur AAdd new override rule.
- Sélectionnez le type de règle (Masquer ou Démasquer).
- Choisissez l'identifiant que vous souhaitez utiliser pour cibler les composants.
- Saisissez la valeur de l'identifiant auquel vous souhaitez appliquer la règle.
- Cliquez sur Add rule.
La nouvelle règle est ajoutée au tableau des règles de remplacement et sera appliquée à toutes les nouvelles sessions.
Pour supprimer ou modifier une règle :
Dans l'interface web de New Relic :
- Accédez à Mobile > [votre entité] > Settings > Application > Session Replay.
- Repérez la règle que vous souhaitez modifier dans le tableau des règles de remplacement.
- Cliquez sur le menu
..., puis sélectionnez Delete ou Edit.
Priorité des règles de masquage
Lorsque plusieurs règles de masquage s'appliquent à une vue ou à un élément, l'ordre de priorité suivant détermine la règle appliquée :
La stratégie prime sur tout.
Si votre stratégie de masquage est
Default, les modes et les remplacements ne sont pas appliqués.Exemple : Si vous avez ajouté des remplacements d'attributs
nr-unmasken ligne dans votre code, mais que la stratégie de masquageDefaultest sélectionnée dans les paramètres, tout sera toujours masqué.Les modes de remplacement prévalent
Les modes déterminent le comportement standard lorsqu'aucune dérogation n'est présente ; par conséquent, si une dérogation est présente, elle prévaudra toujours sur le mode.
Exemple : Si le mode
Mask application textest activé et que vous ajoutez une surcharge d'attributnr-unmasken ligne à une vue dans votre code, cette vue sera démasquée mais toutes les autres vues seront masquées.Les masquages prioritaires prévalent sur les démasquages prioritaires.
Si une vue unique comporte à la fois des règles de masquage et de démasquage, elle sera toujours masquée.
Exemple : Si une vue comporte une substitution d'attribut en ligne
nr-unmasket une règle côté serveurnr-mask, la vue sera masquée.