TL;DR, Kurzantwort
9 Min. LesezeitDie PII-Schwärzung im Session Replay findet im Browser statt, bevor der Rekorder das DOM serialisiert, und jede Bibliothek liefert einen anderen Standard aus. Reines rrweb maskiert nichts außer Passwort-Eingaben. Sentry maskiert allen Text und blockiert alle Medien. Microsoft Clarity maskiert Zahlen und E-Mail-Adressen in seinem Standardmodus Balanced. Maskierter Text verrät in rrweb, Sentry und FullStory weiterhin die Zeichenlänge, und kein Anbieter kann eine neue Maskierungsregel auf Aufzeichnungen anwenden, die bereits auf seinen Servern liegen.
Was ist PII-Schwärzung im Session Replay?
Der entscheidende Punkt bei der PII-Schwärzung im Session Replay ist, dass sie im Browser des Besuchers stattfindet, bevor der Rekorder das DOM serialisiert und irgendetwas über das Netzwerk sendet, weshalb eine Regel, die Sie heute hinzufügen, für eine gestern erfasste Aufzeichnung nichts bewirkt. Ein Replay-Skript filmt nicht den Bildschirm. Es durchläuft das DOM, serialisiert jeden Knoten und streamt Mutationen, sodass Schwärzung bedeutet zu entscheiden, welche Knoten echte Werte ausliefern, welche Platzhalterzeichen ausliefern und welche verworfen und als leeres Kästchen wiedergegeben werden.
Drei Verben decken die möglichen Ergebnisse ab, in jeder Bibliothek unter anderen Namen. Das Blockieren verwirft das Element und gibt einen Platzhalter mit den gleichen Abmessungen wieder. Das Maskieren behält das Element und ersetzt seinen Text. Das Ignorieren hält das Element sichtbar, hört aber auf aufzuzeichnen, was der Nutzer getippt hat. Die falsche Wahl zwischen Maskieren und Blockieren ist der häufigste Fehler, denn maskierte Elemente tragen weiterhin Interaktionsdaten und weiterhin die Länge.
Der Compliance-Rahmen, einschließlich Aufbewahrung und Einwilligung, steht im Leitfaden zur Datenschutzmaskierung bei Session Replay. Diese Seite behandelt die Mechanik darunter: genaue Optionsnamen, ausgelieferte Standardwerte und die Stellen, an denen sie undicht sind.
Welche rrweb-Optionen steuern, was aufgezeichnet wird?
rrweb, der Open-Source-Rekorder hinter einer langen Liste kommerzieller Replay-Produkte, stellt diese Datenschutzoptionen für rrweb.record() mit diesen dokumentierten Standardwerten bereit.
| Option | Standard | Wirkung |
|---|---|---|
blockClass | 'rr-block' | Element wird nicht aufgezeichnet und als Platzhalter derselben Abmessungen wiedergegeben |
blockSelector | null | Wie blockClass, aber über einen CSS-Selektor abgeglichen |
ignoreClass | 'rr-ignore' | Element wird normal gerendert, seine Eingabeereignisse werden aber nicht aufgezeichnet |
ignoreSelector | null | Wie ignoreClass, aber über einen CSS-Selektor abgeglichen |
maskTextClass | 'rr-mask' | Aller Text im Element und in seinen untergeordneten Elementen wird maskiert |
maskTextSelector | null | Wie maskTextClass, aber über einen CSS-Selektor abgeglichen |
maskAllInputs | false | Maskiert den Inhalt jeder Eingabe als * |
maskInputOptions | { password: true } | Maskiert bestimmte Eingabetypen |
maskInputFn | keine | Ersetzt die Standardlogik für die Eingabemaskierung |
maskTextFn | keine | Ersetzt die Standardlogik für die Textmaskierung |
Der Leitfaden von rrweb nennt den ausgelieferten Standard in einer Zeile: input[type="password"] will be masked by default.
Was die Liste nicht enthält, ist eine Option zum Entmaskieren. In den Aufzeichnungsoptionen von rrweb gibt es kein unmaskTextClass und kein unblockSelector, sodass eine Maske auf einem Container nicht für ein einzelnes Kind darin aufgehoben werden kann. Anbieter, die Entmaskieren anbieten, darunter Sentry und FullStory, haben diese Schicht selbst gebaut.

Was maskiert rrweb standardmäßig?
Ab Werk maskiert rrweb genau eine Sache: den Wert von input[type="password"]. Text und jeder andere Eingabetyp werden wortgetreu aufgezeichnet, sodass Felder für E-Mail, Name, Adresse, Kartennummer und Freitext den Browser mit ihren echten Inhalten verlassen, sofern Sie es nicht anders konfigurieren.
Zwei Details im Quellcode von rrweb machen diesen Standard zur Falle. Das erste ist, dass maskInputOptions den Standard ersetzt, statt sich mit ihm zu verbinden. Übergeben Sie maskInputOptions: { email: true }, weil Sie E-Mails abdecken wollen, und Sie haben die Passwortmaskierung stillschweigend abgeschaltet. Die sichere Form schreibt jedes Mal { password: true, email: true } aus.
Das zweite ist die Form des Typs MaskInputOptions. Er akzeptiert color, date, datetime-local, email, month, number, range, search, tel, text, time, url, week, textarea, select und password, und er akzeptiert weder checkbox noch radio noch file. maskAllInputs: true zu setzen erweitert sich auf jeden Schlüssel dieser Liste, sodass selbst die maximale Eingabemaskierung aufzeichnet, welche Checkboxen und Radiobuttons ein Besucher ausgewählt hat. In einem medizinischen Aufnahmeformular ist die Checkbox das sensible Datum. FullStory löst das durch Ausschließen statt Maskieren: Seine Funktion Form Privacy "masks all form elements with the attributes input, textarea, select, and contenteditable, and exclude all form elements with the attributes radio and checkbox."
Wie unterscheiden sich Session-Replay-Anbieter bei den Maskierungsstandards?
Anbieter sitzen an entgegengesetzten Enden desselben Werkzeugkastens, und der Standard entscheidet, was eine übersehene Regel kostet.
| Tool | Ohne Konfiguration maskiert | Opt-out-Mechanismus |
|---|---|---|
| rrweb | Nur input[type="password"] | Keiner; es gibt keine Option zum Entmaskieren |
| PostHog | Alle Eingaben (maskAllInputs steht standardmäßig auf true); Text wird nicht maskiert | Klasse ph-no-capture |
| Sentry | Aller Text (maskAllText: true), alle Eingaben, alle Medien (blockAllMedia: true) | .sentry-unmask, .sentry-unblock, standardmäßig auf nichts angewendet |
| Microsoft Clarity | Zahlen und E-Mail-Adressen im Standardmodus Balanced; Eingaben und Dropdowns in jedem Modus | data-clarity-unmask="true" |
| FullStory mit Private by Default | Jedes Element, maskiert erfasst | .fs-unmask |
| LogRocket | Nichts; inputSanitizer und textSanitizer stehen beide standardmäßig auf false | data-public |
Sentry benennt seine Position unmissverständlich: "by default, the Session Replay SDK will mask all text content with * and block all media elements." Clarity bietet den umgekehrten Kompromiss über drei Modi, in denen Strict "the entire content" maskiert, Balanced "numbers and email addresses" maskiert und Relaxed nichts über Eingaben und Dropdowns hinaus maskiert. Zwei Verhaltensweisen von Clarity sind überhaupt nicht konfigurierbar: "Content in the input boxes is masked in all modes and can't be customized" und "The drop-down menus are also masked in all modes." Clarity markiert, was es verborgen hat, mit ▫ für eine Ziffer, ▪ für einen Buchstaben und • für den Strict-Modus.
Warum verrät maskierter Text weiterhin Informationen?
Maskierter Text verrät die Länge dessen, was er ersetzt hat, weil die am weitesten verbreiteten Rekorder pro Originalzeichen genau ein Platzhalterzeichen einsetzen. Die Maskierungsfunktion von rrweb lautet wörtlich text = '*'.repeat(text.length). Die Standard-Maskierungsfunktion von Sentry ist (s) => '*'.repeat(s.length). FullStory sagt es ausdrücklich: "This placeholder text blob will retain the size, color, and character length of the original text."
Die eigene Dokumentation von FullStory macht das Risiko für ein Feld wie den Kontostand greifbar: "if you were comparing the session replays of 2 different accounts, and one showed a placeholder string for account balance that was three inches long and the other had a placeholder string that was half an inch long, you now know more about these two accounts than you probably need to."
Die Länge ist nicht der einzige Kanal. Maskierte Elemente zeichnen weiterhin Interaktionen auf, weshalb FullStory Kunden im Gesundheitswesen rät, stattdessen auszuschließen: "Because masked elements collect interaction data, it would be possible for someone with good working knowledge of the product to understand which health issues a user was checking the boxes for."
Flowsery
Jetzt 14 Tage kostenlos testen
Echtzeit-Dashboard
Zielverfolgung
Cookie-freies Tracking
Die Abhilfe ist für beides dieselbe. Geben Sie aus einer eigenen maskTextFn oder maskInputFn eine Zeichenfolge fester Länge zurück statt einer, die pro Zeichen arbeitet, und stufen Sie alles, was Rückschlüsse zulässt, vom Maskieren auf Blockieren hoch. Der Abstand zwischen dem Verringern der Identifizierbarkeit und ihrem Beseitigen ist der Unterschied zwischen Pseudonymisierung und Anonymisierung.
Was übersehen Maskierungsregeln?
Maskierungsregeln gelten für DOM-Textknoten und Eingabewerte, sodass alles, was Daten außerhalb dieser beiden Orte trägt, in der Aufzeichnung bleibt. Jeder Anbieter dokumentiert seinen eigenen blinden Fleck.
- Stylesheets. Clarity "doesn't mask content within style sheets or style tags. Hence, it is recommended not to host sensitive content within CSS."
- Inline-SVG. Hotjar: "SVGs linked as the source for image elements can be suppressed, but inline SVGs cannot."
- Bilder im Web. FullStory: "Images cannot be masked when capturing data on web sessions. If you wish to hide images from data capture, use
.fs-exclude." - URLs und Netzwerk-Payloads. Eine maskierte Seite mit einer Kontonummer im Query-String liefert sie trotzdem aus. PostHog stellt
maskCapturedNetworkRequestFnbereit; FullStory führt Allowlists für Request- und Response-Bodys. - Eigene Event-Eigenschaften. Die Schwärzung regelt den Replay-Stream, nicht die Analyse-Events, die Ihr eigener Code sendet.

Lässt sich Maskierung auf bereits vorhandene Aufzeichnungen anwenden?
Kein Anbieter kann eine Sitzung rückwirkend schwärzen, die seine Server bereits erreicht hat, und zwei sagen das schriftlich. Clarity: "Changes to masking settings affect new recordings and could take up to one hour to be reflected. Masking changes can't be applied retroactively." Hotjar: "After a session is sent, there is no way to retrieve or suppress data, and updating suppression settings will not apply the updated settings retroactively."
Die Angabe von einer Stunde ist der Teil, den Teams übersehen. Eine Regel hinzuzufügen, nachdem Sie Kartennummern in einem Replay entdeckt haben, lässt bis zu eine weitere Stunde an Aufzeichnungen diese Nummern erfassen, zusätzlich zu allem bereits Gespeicherten. Die Gegenmittel sind, die betroffenen Aufzeichnungen zu löschen und die Aufbewahrung zu verkürzen, was die Aufbewahrungsdauer zu einer Schwärzungskontrolle macht statt zu einer Speichereinstellung. Das ist auch der Grund, warum Kläger in Klagen wegen Abhörens durch Session Replay darüber streiten, was erfasst wurde, und nicht darüber, was später in der Replay-Oberfläche verborgen wurde.
Sollten Sie alles maskieren und dann entmaskieren, oder umgekehrt?
Maskieren Sie standardmäßig alles und entmaskieren Sie, was Sie geprüft haben, denn der Fehlerfall einer Blockliste ist das Erfassen von Daten, die Sie nie erfassen wollten, und der Fehlerfall einer Zulassungsliste ist ein langweiliges Replay. FullStory hat Private by Default auf dieser Begründung aufgebaut: "no text is captured or sent outside the user's browser unless it is explicitly allowlisted as safe to capture", sodass "you won't accidentally capture unwanted data even if you fail to set specific data capture rules."
Klären Sie die Vorrangregel, bevor Sie den ersten Selektor schreiben. FullStory löst Konflikte zugunsten des Datenschutzes: "if an element matches both a masking rule and an unmasking rule, it would be masked rather than unmasked, as the stricter rule will always apply." Clarity geht bei Attributen den anderen Weg: data-clarity-unmask="true" entmaskiert einen Knoten und seine untergeordneten Elemente und "overrides anything set on the Clarity website." Zwei Produkte, zwei entgegengesetzte Antworten.
Halten Sie die Regeln im Code statt in einem Dashboard. FullStory nennt den Weg über Code "a less brittle and more future-proof approach than handling these rules through the UI using CSS selectors", weil ein in einer Einstellungsmaske geschriebener Selektor stillschweigend bricht, wenn eine Komponentenbibliothek neue Klassennamen ausliefert.
Flowsery läuft cookiefrei und zeichnet Sitzungen ohne Sampling auf. Wenn Sie noch entscheiden, was das Replay überhaupt erfasst, beginnen Sie damit, was Session Replay ist, und legen Sie dann die Maskierungsrichtlinie fest, bevor das erste Skript-Tag live geht.
Häufig gestellte Fragen
Findet die Maskierung beim Session Replay vor oder nach dem Senden der Daten statt?
Vorher, in jedem hier dokumentierten Produkt. Clarity "never captures anything that is masked or sent over the wire", und Hotjar beschreibt das Unterdrücken als das Entfernen personenbezogener Daten "before sending a session from your website's Document Object Model (DOM) to Hotjar". Eine erst bei der Wiedergabe angewendete Maskierung ist ein Anzeigefilter, keine Schwärzung.
Deckt maskAllInputs: true jedes Formularfeld in rrweb ab?
Nein. Es erweitert sich auf jeden Schlüssel des rrweb-Typs MaskInputOptions, der checkbox, radio und file auslässt, sodass der Zustand von Checkboxen und Radiobuttons weiter aufgezeichnet wird. Blockieren Sie diese Elemente stattdessen, so wie es Form Privacy von FullStory tut.
Kann ich ein einzelnes Feld in einem maskierten Container entmaskieren?
Das hängt vom Produkt ab, und rrweb selbst kann es nicht. Die Aufzeichnungsoptionen von rrweb enthalten keine Klasse und keinen Selektor zum Entmaskieren, sodass eine Maske auf einem übergeordneten Element jedes Kind abdeckt. FullStory und Sentry ergänzen das Entmaskieren darüber, wobei Sentry .sentry-unmask und .sentry-unblock ausliefert, die standardmäßig auf nichts angewendet werden.
Was ist der Unterschied zwischen dem Maskieren und dem Blockieren eines Elements?
Maskieren behält das Element und ersetzt seinen Text; Blockieren entfernt das Element und gibt einen Platzhalter wieder. FullStory zieht die Grenze am Rückschlussrisiko und empfiehlt den Ausschluss für regulierte Daten, für Identifikatoren wie Bankkontonummern und für jedes Element, bei dem allein die Interaktion etwas Persönliches verrät.
Gelten maskierte Aufzeichnungen weiterhin als personenbezogene Daten?
Behandeln Sie sie als personenbezogene Daten, bis Sie das Gegenteil bewiesen haben. Eine Maskierung, die Zeichenlänge, Klickkoordinaten und Elementstruktur erhält, verringert die Identifizierbarkeit, ohne sie zu beseitigen, und das ist Pseudonymisierung statt Anonymisierung, und pseudonymisierte Daten bleiben im Anwendungsbereich der DSGVO.
Wie lange dauert es, bis eine neu hinzugefügte Maskierungsregel wirkt?
Bei Clarity liegt der dokumentierte Wert bei bis zu einer Stunde, und das nur für neue Aufzeichnungen. Clientseitige Regeln in rrweb, Sentry, PostHog und LogRocket greifen beim nächsten Seitenaufruf, der das aktualisierte Skript ausliefert, sodass ein zwischengespeichertes Bundle oder eine lange CDN-TTL das Fenster verlängert, in dem noch die alten Regeln gelten.
Flowsery
Jetzt 14 Tage kostenlos testen
Echtzeit-Dashboard
Zielverfolgung
Cookie-freies Tracking
Welches Session-Replay-Tool maskiert standardmäßig am meisten?
Sentry hat von allen hier behandelten Tools die strengste Standardeinstellung: Es maskiert allen Text (maskAllText: true), maskiert jede Eingabe und blockiert alle Medien (blockAllMedia: true). rrweb liegt am anderen Ende und maskiert standardmäßig nur input[type="password"], solange man nichts weiter konfiguriert. Wer einen Anbieter wählt, ohne diese Standards zu prüfen, entscheidet damit, wie viel ungeschützt bleibt, bevor überhaupt eine eigene Regel geschrieben wird.
Maskiert PostHog standardmäßig Text?
PostHog maskiert standardmäßig keinen Text. Es maskiert alle Eingaben, da maskAllInputs standardmäßig auf true steht, doch reine Textknoten werden ohne eigene Regeln unverändert aufgezeichnet. Mit der Klasse ph-no-capture lassen sich einzelne Elemente ganz aus der Aufzeichnung nehmen, sie erscheinen dann als Block derselben Größe.
Lassen sich Inline-SVGs oder Stylesheets im Session Replay maskieren?
Maskierungsregeln gelten für DOM-Textknoten und Eingabewerte, alles außerhalb dieser beiden Bereiche bleibt davon unberührt. Clarity maskiert keine Inhalte in Stylesheets oder Style-Tags, weshalb das Tool davon abrät, sensible Inhalte in CSS unterzubringen. Hotjar weist darauf hin, dass als Bildquelle eingebundene SVGs unterdrückt werden können, inline eingebettete SVGs jedoch nicht.
Sollten Maskierungsregeln im Code oder in einer Dashboard-Oberfläche liegen?
Am besten im Code. FullStory bezeichnet den Code-First-Ansatz als weniger brüchig als die Pflege der Regeln über die Benutzeroberfläche mit CSS-Selektoren, weil ein in einem Einstellungsbildschirm definierter Selektor stillschweigend bricht, sobald eine Komponentenbibliothek neue Klassennamen ausliefert. Versioniert man die Regeln zusammen mit der Anwendung, lässt sich eine Änderung wie jeder andere Code ausliefern und zurückrollen.
War dieser Artikel hilfreich?
Teilen Sie uns Ihre Meinung mit!
Sieh uns öfter bei Google
Ein Klick macht Flowsery zu einer bevorzugten Quelle. Unsere Artikel stehen dann weiter oben in deinen Top-Meldungen, im KI-Modus und in den KI-Übersichten.
Bevor Sie gehen...
Flowsery
Umsatzorientierte Analysen für Ihre Website
Verfolgen Sie jeden Besucher, jede Quelle und jede Conversion in Echtzeit. Einfach, leistungsstark und komplett ohne Cookies.
Echtzeit-Dashboard
Zielverfolgung
Cookie-freies Tracking
Verwandte Glossarbegriffe


Wie Session Replay funktioniert und was es nicht sieht
Ein Session Replay rekonstruiert einen Besuch aus DOM-Mutationen und Eingaben, nicht aus Video. Was es erfasst, was Maskierung verbirgt, was Heatmaps trennt.


Wie stark bremst Session Replay die Website-Geschwindigkeit?
Die belastbare Antwort darauf, ob Session Replay eine Website verlangsamt, mit rrweb- und Sentry-Zahlen zu Skriptgröße, Hauptthread-CPU und Upload.


Wo Rage Clicks vs Dead Clicks wirklich auseinandergehen
Bei Rage Clicks vs Dead Clicks geht es um die Ursache, nicht um die Schwere. Erkennungsschwellen von PostHog, Hotjar, FullStory, LogRocket und Clarity.


Wie partitionierte CHIPS-Cookies jeder Site ein eigenes Glas geben
Partitionierte CHIPS-Cookies brauchen Secure, SameSite=None und ein Attribut mehr, und der Browser hält pro Top-Level-Site eine eigene Kopie.


Was eine Abhörklage wegen Session Replay vor Gericht beweisen muss
Jede Abhörklage wegen Session Replay stützt sich auf CIPA 631, Pennsylvanias WESCA oder den Wiretap Act. Was Kläger vortragen, was Gerichte urteilten.


Was Digital Experience Analytics abdeckt, das Web Analytics übersieht
Nicht Events zählen, sondern den Besuch rekonstruieren: Digital Experience Analytics vereint Session Replay, Heatmaps, Friction Detection und Journey-Analyse.
Verwandte Artikel


Hinter einer Drop-off-Rate verstecken sich zwei Zahlen
Jeder Funnel liefert zwei Zahlen für die Drop-off-Rate, eine pro Schritt und eine Ende zu Ende, und Teams zitieren sie wahllos. Eine Tabelle trennt sie.


Wem gehört Dwell Time, der Suchmaschine oder deiner Analytics
Suchmaschinen besitzen Dwell Time, deine Analytics sieht sie nie. Wo die Grenze zu Time on Page und Session-Dauer liegt und was Google dokumentiert.


Die Setup-Entscheidungen hinter jeder Funnel-Analyse
Drei Setup-Entscheidungen bestimmen, was Funnel-Analyse meldet: Reihenfolge der Schritte, Conversion-Fenster und ob der Funnel Nutzer oder Sessions zählt.

