zurück zur Übersicht Mehr Artikel

Können Websites deine Zwischenablage lesen? Teste beide Wege

Du hast ein Passwort kopiert, bist auf eine Website gewechselt und siehst plötzlich eine Anfrage zum Lesen deiner Zwischenablage. Was gibst du mit einem Klick auf „Zulassen“ tatsächlich preis? Und wenn keine Abfrage erscheint: Heißt das, dass die Seite nichts lesen kann?

Es gibt zwei Zugriffswege. Wenn du etwas in eine Seite einfügst, erhält sie die Daten dieses Einfügevorgangs. Eine separate Browser-API kann die Zwischenablage auch ohne Einfügen lesen, sofern die Zugriffsregeln des Browsers es erlauben. Wer beides vermischt, landet entweder bei der beruhigenden Falschaussage „Websites können deine Zwischenablage nicht lesen“ oder bei der alarmierenden Variante „Jeder offene Tab sieht deine Passwörter“.

Die Kurzfassung: Ja, eine Website kann lesen, was du in sie einfügst. Sie kann auch einen direkten Zugriff auf die Zwischenablage anfordern. Chrome kann eine erteilte Berechtigung speichern, während Firefox und Safari andere Regeln für Nutzeraktionen und Einfügen-Abfragen verwenden. Allein das Öffnen einer neuen Website gibt deine Zwischenablage nicht automatisch preis. Die Demo unten prüft die beiden Wege getrennt mit harmlosem Beispieltext.

Einfügen heißt bereits weitergeben

Drückst du in einem Textfeld Ctrl+V oder Command+V, löst der Browser ein paste-Event aus. Ein Listener kann event.clipboardData.getData('text/plain') aufrufen, bevor der Text im Feld erscheint. Für dieses von dir ausgelöste Einfügen ist kein zusätzlicher Berechtigungsdialog nötig. Du hast dem Browser gerade gesagt, wohin die Daten sollen.

Das Event wird im Dokument nach oben weitergereicht. Der Listener muss also nicht an genau diesem Feld hängen. Eine Seite kann außerdem das normale Einfügen verhindern. Bleibt das Feld danach leer, heißt das nicht, dass die Seite nichts empfangen hat.

Probier es hier aus. Markiere und kopiere den Beispieltext und füge ihn dann in das leere Feld ein. Die Demo zählt die Zeichen und listet die vom Event bereitgestellten Formate auf. Den eingefügten Text verwirft sie, statt ihn ins Feld zu übernehmen. Diese Komponente lädt bei keinem der beiden Tests Inhalte hoch oder speichert sie dauerhaft.

Zwei Wege, wie Daten eine Seite erreichen

Verwende diesen harmlosen Beispieltext. Markiere und kopiere ihn selbst und probiere dann beide Wege unten aus. Das Kopieren ersetzt deinen aktuellen Zwischenablageinhalt.

bscan clipboard sample 123

Du fügst in die Seite ein

Wartet auf dein Einfügen. Kein Lesezugriff auf die Zwischenablage angefordert.

Die Seite fordert Lesezugriff an

Dieser Knopf fordert deinen aktuellen Zwischenablagetext an. Kopiere vor der Verwendung nur den Beispieltext. Dein Browser kann nach einer Berechtigung fragen oder ein Einfügen-Menü anzeigen.

API-Verfügbarkeit wird geprüft…
Einfügen und direktes Lesen nutzen unterschiedliche Zugriffswege. Diese Demo hält nur Anzahlen und Formatnamen im Arbeitsspeicher der Seite, ohne Upload oder dauerhafte Speicherung. Das Löschen der Ergebnisse leert weder deine Zwischenablage noch setzt es Browser-Berechtigungen zurück.

Eine Tabellenzelle oder ein formatierter Absatz kann mehr als reinen Text mitbringen. Die Zwischenablage kann denselben Inhalt in mehreren Darstellungen enthalten, etwa als text/plain und text/html. Eine Seite kann die Formate empfangen, die der Browser für diesen Einfügevorgang bereitstellt, nicht nur die Zeichen, die du zu sehen erwartest. Unsere Demo listet die Formatnamen auf. Sie stellt kein eingefügtes HTML dar und öffnet keine eingefügten Dateien.

Kann eine Website die Zwischenablage lesen, ohne dass du etwas einfügst?

Ja, wenn der Browser einen direkten Lesezugriff erlaubt. navigator.clipboard.readText() fordert Text aus der aktuellen Zwischenablage an. Mit read() lassen sich auch unterstützte Nicht-Text-Formate anfordern. Beide Methoden gehören zur Async Clipboard API, die auf sichere Kontexte wie HTTPS beschränkt ist. Eine sichere Verbindung ist eine Voraussetzung, keine pauschale Erlaubnis zum Sammeln deiner Daten.

Klicke erst auf den Leseknopf der Demo, nachdem du den harmlosen Beispieltext kopiert hast. Das ist eine echte API-Anfrage. Dein Browser kann deshalb einen eigenen Berechtigungsdialog oder eine Einfügen-Auswahl anzeigen. Die Seite meldet, ob die Anfrage erfolgreich war und wie lang der zurückgegebene Text ist. Eine Ablehnung wird nicht als grünes Siegel für einen „sicheren Browser“ gewertet: Sie beschreibt genau diese Anfrage, mit diesem Fokuszustand und diesen Berechtigungen.

Die Clipboard-Spezifikation unterscheidet zwischen einem echten Einfügen durch den Nutzer und einem Skript, das ein Event namens paste auslöst. Ein Skript kann kein vertrauenswürdiges Einfüge-Event erzeugen, um damit die Systemzwischenablage freizuschalten. Deshalb braucht der erste Test deine Einfügeaktion und der zweite einen vom Browser erlaubten Lesezugriff.

Chrome kann Berechtigungen speichern; Safari und Firefox arbeiten anders

In Chromium-Browsern, darunter Chrome und Edge, kann ein Dokument mit Fokus die Berechtigung clipboard-read anfordern. Wurde sie bereits erteilt, kann ein zulässiger Lesezugriff ohne erneute Abfrage gelingen. „Diesmal wurde ich nicht gefragt“ beweist nicht, dass nie eine Berechtigung erteilt wurde. Prüfe die bestehenden Berechtigungen der Website.

Firefox und Safari unterstützen diese dauerhafte clipboard-read-Berechtigung nicht. Ihr direkter Lesezugriff setzt eine kürzlich erfolgte Nutzeraktion voraus und kann eine vorübergehende Einfügen-Auswahl anzeigen. Stammt der kopierte Inhalt von derselben Origin, kann diese Abfrage entfallen. Wer nur Text testet, der auf der Testseite selbst kopiert wurde, bekommt deshalb möglicherweise einen falschen Eindruck davon, was bei Text aus einer anderen App passiert.

Schreibe für einen zweiten Durchlauf einen harmlosen Satz in einen lokalen Texteditor, kopiere ihn dort, komm hierher zurück und fordere erneut einen Lesezugriff an. Vergleiche die Browser-Abfragen, nicht nur die Zahl am Ende. MDN dokumentiert die Unterschiede zwischen den Browsern; WebKit erklärt sein Konzept für den Zugriff auf die Zwischenablage. Eingebettete Frames und Browserrichtlinien können zusätzliche Einschränkungen mitbringen. Teste deshalb in dem Browser, den du tatsächlich nutzt.

Liest ein Kopierknopf, was vorher in der Zwischenablage stand?

Das muss er nicht. Ein Knopf, der navigator.clipboard.writeText() verwendet, schreibt den Text der Seite in die Zwischenablage. Diese Methode gibt nicht zuerst den vorherigen Inhalt zurück. Lesen und Schreiben sind getrennte Vorgänge mit unterschiedlichen Zugriffsregeln, wie Googles Leitfaden zur Async Clipboard API erklärt.

Eine Seite kann auch das copy-Event behandeln, selbst bestimmen, was in die Zwischenablage gelangt, und den normalen Kopiervorgang abbrechen. Die API für das copy-Event liefert dem Handler den alten Inhalt der Zwischenablage nicht. Er kann allerdings den im eigenen Dokument markierten Text lesen. Einen Satz von einer Seite zu kopieren ist eine beobachtbare Aktion. Das zeigt unsere separate Demo zu Tabwechseln und Seitenaktivität.

Deshalb garantiert ein Kopierknopf auch nicht, dass der kopierte Text mit dem sichtbaren Text übereinstimmt. Prüfe eingefügte Befehle, bevor du sie ausführst. Gefährlich ist das Ausführen dessen, was angekommen ist, nicht die bloße Existenz eines Kopierknopfs.

Können Websites deinen Zwischenablageverlauf sehen?

Die normale Clipboard API des Webs hat keine Methode, um den Zwischenablageverlauf deines Betriebssystems aufzulisten. Ein erlaubter Lesezugriff betrifft den aktuellen Inhalt, kein durchsuchbares Archiv von allem, was du letzte Woche kopiert hast. Zwischenablage-Manager, Browser-Erweiterungen und native Apps haben eigene Zugriffsmodelle. Das Verhalten einer Smartphone-App ist kein Beleg dafür, was eine normale Webseite kann.

Bereits übergebene Daten bekommst du dadurch aber nicht zurück. Eine Website, die Text erhalten hat, kann eine eigene Kopie behalten. Wenn du später den Inhalt der Zwischenablage ersetzt, den Tab schließt oder die Berechtigung zurücksetzt, kannst du diese Kopie damit nicht zurückholen. Ebenso leert der Knopf „Ergebnisse löschen“ oben nur die Anzeige dieser Demo. Er leert weder deine Systemzwischenablage noch widerruft er eine Browser-Berechtigung.

Schließe den Zugriffsweg, den du tatsächlich geöffnet hast

Öffne in Chrome auf dem Desktop die Einstellungen, dann „Datenschutz und Sicherheit“, „Website-Einstellungen“ und dort „Zwischenablage“. Prüfe die zugelassenen Websites und entferne Zugriffe, die du nicht mehr brauchst. Du kannst auch neben der Adressleiste die Bedienelemente für die aktuelle Website öffnen und ihre Einstellungen prüfen. Googles Anleitung zu Berechtigungen beschreibt diese Optionen. Auch wenn du direkte Lesezugriffe blockierst, kann eine Seite weiterhin empfangen, was du bewusst in sie einfügst.

Füge im Alltag nur dort ein, wo die Daten auch ankommen sollen. Verwende harmlose Beispiele, wenn du Berechtigungen prüfst. Geht es dir darum, was eine Seite ohne dein Zutun erfährt, vergleiche das mit Font-Fingerprinting oder dem Auslesen des WebGL-Renderers: Das sind andere Datenquellen, und ein abgelehnter Zugriff auf die Zwischenablage sagt nichts über sie aus.

Wenn du Kundenkonten in getrennten Profilen verwaltest, kann ein Werkzeug wie Incogniton diese Arbeit organisieren. Behandle trotzdem jedes Einfügen als bewusste Übergabe an die empfangende Seite. Getrennte Profile sind kein Grund, ein Geheimnis eines Kunden in das falsche Konto einzufügen.

Kopiere das Beispiel, vergleiche die beiden Ergebnisse und prüfe anschließend jede Berechtigung, die du beim Test erteilt hast. Mit dem vollständigen Scan kannst du danach die Browsersignale untersuchen, die nicht von einem Einfügevorgang abhängen.

Incogniton-Logo

Bring deine Privatsphäre aufs nächste Level

Pfeil