Hauptmenü öffnen

Die Zwischenablage (englisch Clipboard) ist ein Puffer, also ein Zwischenspeicher, für das kurzzeitige Speichern und Übertragen von Daten. Dieses Verfahren wird meist nur auf einem Computer zwischen Dokumenten oder Anwendungen angewandt. Betriebssysteme benutzen für die Interaktion mit der Zwischenablage die Technik Kopieren und Einfügen. Die meisten Programme greifen auf deren Schnittstellen für die Zwischenablage zu, wenn sie auf eine festgelegte Benutzereingabe, wie eine Tastenkombination oder eine Menüauswahl, reagieren.[1] Ein Element in der Zwischenablage kann in verschiedenen Formaten vorgehalten werden. Jedes Programm bestimmt dabei in welchen Variationen die Daten gespeichert werden. Dies ist nützlich, da zum Zeitpunkt des Speicherns keine Rückschlüsse auf die Zielanwendung gezogen werden können.[2]

Windows, Linux und MacOS nutzen für die Zwischenablage den RAM und können nicht mehrere Elemente zwischenspeichern, da sie den vorherigen Inhalt überschreiben. Zudem wird das Objekt in der Zwischenablage nach dem Einfügen nicht gelöscht, sondern weiter vorgehalten. Ein Neustart oder Ausschalten des Systems leert aber dennoch den RAM und somit das gespeicherte Objekt. Die Verfahrensweise der Zwischenablage kann dabei zwischen Betriebssystemen und ihren Versionen variieren. Diese Kernfunktionen der Zwischenablage können zudem durch Clipboard Manager und Einstellungen verändert oder erweitert werden.[3]

Die Interaktionstechnik Drag and Drop benutzt die Zwischenablage dagegen nicht, obwohl die Funktionalität Ähnlichkeiten mit der von Kopieren und Einfügen aufweist.[4]

Inhaltsverzeichnis

GeschichteBearbeiten

Eine erste Form der Zwischenablage wurde von Pentti Kanerva im Texteditor TVEDIT implementiert.[5] Die Software nutzte einen Zwischenspeicher für das Ausschneiden von Texten. Der Nutzer musste erst Zeichen auswählen und danach löschen. Darauffolgend konnte er diese an einer bestimmten Stelle wiederherstellen.[5]

Seitdem ein Text an einer Stelle gelöscht und an einer anderen Stelle wieder eingefügt werden konnte, entspricht der Begriff „Löschen“ in diesem Zusammenhang nicht mehr der eigentlichen Bedeutung des Wortes. Larry Tesler benannte das Szenario deswegen 1973 in Ausschneiden, Kopieren, Einfügen (englisch cut, copy and paste) um. Außerdem definierte er den Begriff „clipboard“, was wörtlich übersetzt „Klemmbrett“ heißt, als Zwischenspeicher für diese Interaktionstechnik.[6] Tesler war gleichzeitig auch einer der Entwickler des ersten PCs namens Apple Lisa, der diese Technologie ab Werk unterstützte.[7]

DatenformateBearbeiten

Die Zwischenablage unterstützt das Speichern von mehreren Typen des Datenobjekts zur selben Zeit, sodass komplexe Datenstrukturen ebenso abgelegt werden können. Diese reichen von Textformaten mittels Auszeichnungssprache, wie zum Beispiel RTF oder HTML, über eine Vielfalt von Bitmaps und Vektorgrafiken bis hin zu komplexen Varianten, wie Dateien und Verzeichnisse, Tabellen und Einträgen in Datenbanken. Das Ausschneiden von mehreren Zellen einer Tabelle und das darauffolgende Einfügen in eine andere Tabelle könnte beispielsweise die zugrunde liegenden Formeln, Datensätze und sogar automatische Übersetzungen der Referenzen innerhalb einer Zelle mit einfließen lassen. Dies würde zum Beispiel dazu führen, dass nach einem Kopieren und Einfügen von Zellen, die von einer Summenfunktion benutzt werden, ein Programm den Inhalt dieser Funktion mit den neuen Referenzen aktualisiert.

Eine Anwendung kann Daten in vielen verschiedenen Formaten der Zwischenablage hinzufügen. Diese können native, einfachere oder häufigere Datenformate sein, die eine höhere Chance haben von unterschiedlichsten Anwendungen erkannt zu werden. Deshalb kann die Zielanwendung beim Einfügen der Zwischenablage das Format wählen, das am ehesten dem der Anwendung entspricht, sodass nach Möglichkeit alle Originaldaten vorhanden bleiben.

Beispiel für Formate die in der Zwischenablage von Ubuntu gespeichert sind.
Titel der englischen Version dieses Artikels (in Mozilla Firefox) Python Script im Ordner downloads Klemmbrett-Piktogramm der englischen Version dieses Artikels
available formats in clipboard 'TIMESTAMP', 'TARGETS', 'MULTIPLE', 'SAVE_TARGETS', 'text/html', 'text/_moz_htmlcontext', 'text/_moz_htmlinfo', 'text/plain', 'COMPOUND_TEXT', 'text/x-moz-url-priv' 'TIMESTAMP', 'TARGETS', 'MULTIPLE', 'x-special/gnome-copied-files', 'text/uri-list', 'text/plain', 'COMPOUND_TEXT', 'text/plain;charset=utf-8' 'TIMESTAMP', 'TARGETS', 'MULTIPLE', 'SAVE_TARGETS', 'text/html', 'text/_moz_htmlinfo', 'text/_moz_htmlcontext', 'image/png', 'image/tiff', 'image/x-icon', 'image/x-ico', 'image/x-win-bitmap', 'image/jpeg', 'image/bmp', 'image/x-bmp', 'image/x-MS-bmp', 'application/x-qt-image'
TIMESTAMP '\xdb\xdb\n\x00' @\x07\x0f\x00 '\xb0$\x1e\x00'
TARGETS '\xb1\x01\x00\x00\xaf\x01\x00\x00\xb0\x01\x00\x00\xc6\x01\x00

\x00)\x02\x00\x00*\x02\x00\x00+\x02\x0 […]

'\xb1\x01\x00\x00\xaf\x01\x00\x00\xb0\x01\x00\x007\x02\x00

\x008\x02\x00\x00\x13\x01\x00\x00\xd7\x01 […]

'\xb1\x01\x00\x00\xaf\x01\x00\x00\xb0\x01\x00\x00\xc6

\x01\x00\x00)\x02\x00\x00+\x02\x00\x00*\x02\x0 […]

MULTIPLE [empty] [empty] [empty]
SAVE TARGETS [empty] - [empty]
text/html '\xff\xfe<\x00h\x001\x00 \x00i\x00d\x00=\x00"\x00f\x00i\x00r\x00s

\x00t\x00H\x00e\x00a\x00d\x00i\x00 […]

'\xff\xfe<\x00i\x00m\x00g\x00 \x00a\x00l\x00t\x00=\x00"

\x00"\x00 \x00s\x00r\x00c\x00=\x00"\x00h\x00 […]

text/_moz_htmlcontext '<\x00h\x00t\x00m\x00l\x00 \x00c\x00l\x00a\x00s\x00s\x00=\x00"

\x00c\x00l\x00i\x00e\x00n\x00t\x00-\x […]

[empty]
text/_moz_htmlinfo '0\x00,\x000\x00' '0\x00,\x000\x00'
text/plain 'Clipboard (computing)' '/home/user/Downloads/show_clipboard.py' -
COMPOUND_TEXT 'Clipboard (computing)' '/home/user/Downloads/show_clipboard.py'
text/x-moz-url-priv 'h\x00t\x00t\x00p\x00s\x00:\x00/\x00/\x00e\x00n\x00.\x00w\x00i\x00k

\x00i\x00p\x00e\x00d\x00i\x00a\x […]

-
x-special/gnome-copied-files - 'copy\nfile:///home/user/downloads/show_clipboard.py'//
text/uri-list 'file:///home/user/downloads/show_clipboard.py\r\n'//
text/plain;charset=utf-8 '/home/user/Downloads/show_clipboard.py'
image/png - '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\xdc

\x00\x00\x00\xf4\x08\x06\x00\x00\x00\xf0\xa5H\x […]

image/tiff [empty]
image/x-icon, image/x-ico, image/x-win-bitmap '\x00\x00\x01\x00\x01\x00\xdc\xf4\x00\x00\x01\x00 \x00

\x98a\x03\x00\x16\x00\x00\x00(\x00\x00\x00\xd […]

image/jpeg '\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00

\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x06\ […]

image/bmp, image/x-bmp, image/x-MS-bmp 'BMFu\x02\x00\x00\x00\x00\x006\x00\x00\x00(\x00\x00\x00

\xdc\x00\x00\x00\xf4\x00\x00\x00\x01\x00\x18 […]

application/x-qt-image '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\xdc\x00

\x00\x00\xf4\x08\x06\x00\x00\x00\xf0\xa5H\x […]

SicherheitBearbeiten

Das Hijacking der Zwischenablage ist ein Angriff, der den Inhalt der Zwischenablage mit bösartigem Inhalt, wie zum Beispiel eine mit Viren behaftete Webseite, austauscht.[8] Während einige Sicherheitslücken geschlossen wurden, kann über JavaScript und damit über jede Webseite das sogenannte „pastejacking“ weiterverwendet werden.[9] Dylan Ayrey fand diese Lücke und stellt eine Webseite bereit, die zeigen soll, dass das System Aktionen ausführt, die der Nutzer gar nicht beabsichtigt.[10]

2013 entdeckten Forscher ein Sicherheitsrisiko von Applikationen zur Passwortverwaltung auf Android-Geräten. Sie fanden heraus, dass 21 der beliebtesten dieser Anwendungen Passwörter ausgelesen werden können. Dies geschieht durch die Verwendung einer anderen Applikation und den Zugriff auf die Zwischenablage.[11] Joe Siegrist sagte, dass dieser Angriff alle Anwendungen des Betriebssystems Android betrifft.[12] Das Fraunhofer Institut SIT fand 2016 nochmals eine ähnliche Sicherheitslücke, die es ebenfalls ermöglichte Passwörter aus der Zwischenablage zu stehlen.[13]

Zwischenablagen der BetriebssystemeBearbeiten

WindowsBearbeiten

Die Zwischenablage in Windows speichert einen Eintrag in 3 verschiedenen Formaten. Jeder Eintrag liegt in mindestens einem dieser Formate vor.[14]

  • Standardformate von Windows[15] (z. B. CF_BITMAP, oder CF_UNICODETEXT),
  • Registrierte Formate, die durch Anwendungen hinzugefügt werden[16] (z. B. CF_HTML)
  • Interne Formate von Anwendungen oder des Systems

Windows unterstützt außerdem das verzögerte Erstellen (englisch delayed rendering) der Formate eines zwischengespeicherten Datenobjekts. Das bedeutet, dass die Anwendung nur bei Bedarf ein Format generiert und in die Zwischenablage verschiebt. Falls also eine Applikation zeitaufwändige Prozesse benötigt, um die Daten in ein spezielles Format aufzubereiten, können die lang andauernden Rechenoperationen mit dieser Funktionalität umgangen werden.[17]

Bis einschließlich Windows XP konnte auf die Zwischenablage mit Hilfe von clipbrd.exe zugegriffen werden. Diese Anwendung erlaubte es dem Nutzer, die aktuelle Zwischenablage in einer CLP Datei abzuspeichern. Darauffolgend konnte die Datei entweder im eigenen System oder per Übertragung innerhalb eines anderen Windowscomputer verwendet werden. Indem die CLP mittels clipbrd.exe in die Zwischenablage importiert wird, kann der Anwender den Inhalt an den gewünschten Ort des Zielsystems einfügen. Dies ist nützlich, da die verschiedenen Formate gespeichert werden und somit auch für andere Nutzer eine funktionierende Variante bereithält.[18]

Mit Windows 10 1809 erweitert Microsoft die Möglichkeiten der Zwischenablage deutlich. Die Zwischenablage erhält einen Verlauf, der es ermöglicht mehrere Objekte oder Textpassagen in die Zwischenablage zu übernehmen. Aus dem Verlauf kann dann beim Einfügen das gewünschte Objekte ausgewählt werden. Zusätzlich kann der Verlauf der Zwischenablage mit der Cloud (automatisch oder manuell) synchronisiert werden.[19]

Außerdem ist die Zwischenablage über PowerShell erreichbar:[20][21]

# Um den Inhalt eines Ordners in die Zwischenablage einzufügen.
Set-Clipboard -Path "C:\directory\"
# Um den Inhalt der Ablage zu erlangen.
Get-Clipboard

Daten können auch über die Eingabeaufforderung gespeichert werden:[22]

$ # Um den Inhalt eines Ordners in die Zwischenablage zu speichern.
$ dir | clip

macOSBearbeiten

Auch macOS speichert einen Eintrag in verschiedenen Formaten in die Zwischenablage.

Dessen Inhalt kann über das Menü der Schaltfläche Bearbeiten des Finders und die Auswahl des Eintrags „Zeige Zwischenablage“ angezeigt werden. Außerdem kann die Zwischenablage geräteübergreifend mit derselben Apple-ID benutzt werden, solange sie WLAN, Bluetooth und Handoff aktiviert haben. So kann ein kopierter Text auf einem Gerät, auf einem Zweiten eingefügt werden.[23]

Mit Hilfe folgender Kommandos kann die Zwischenablage benutzt werden:[24]

$ # Um Daten in die Zwischenablage zu kopieren.
$ echo 'hello world' | pbcopy
$ # Um aus dem Clipboard heraus einzufügen.
$ pbpaste
hello world

X Window SystemBearbeiten

Das X Window System, das vorwiegend in Unix oder Linux basierten Betriebssystemen eingesetzt wird, stellt drei Zwischenablagen namens „PRIMARY“, „SECONDARY“ und „CLIPBOARD“ bereit.[25]

Die Interaktion mit diesen ist nicht standardisiert. Dennoch benutzen die meisten modernen Bibliotheken und Desktopumgebungen, wie GNOME oder KDE, eine weit verbreitete Konvention, die durch freedesktop.org spezifiziert wurde.[26]

„CLIPBOARD“ wird identisch wie das Pendant aus Windows benutzt. Der Unterschied zu den bereits erwähnten Systemen ist, dass die Daten nicht extra in der Zwischenablage abgelegt werden, sondern nur deren Referenz. Die Anwendung übernimmt den Besitz der Selektion und kommuniziert dies dem X Server. Sobald ein Einfügen erfolgt, wird das Datenobjekt und seine verfügbaren Formate von der Anwendung angefordert und abhängig davon eingefügt.[27]

„PRIMARY“ hingegen, ist ein X11 spezifischer Mechanismus. Das bedeutet, dass die Selektion direkt ein Kopieren der Daten zur Folge hat und über die dritte beziehungsweise mittlere Maustaste eingefügt wird. Dieser Prozess ist komplett unabhängig von der Variante „CLIPBOARD“ und verändert deshalb nicht dessen Inhalt.[27]

„SECONDARY“ wurde als Alternative zu „PRIMARY“ geplant, wird aber meist nicht verwendet.[28]

Zwei Kommandos ermöglichen den Zugriff auf das „CLIPBOARD“:[28][29]

$ # Speichern mit Hilfe von xclip.
$ echo text | xclip -in -selection clipboard
$ # Speichern mit Hilfe von xsel.
$ echo text | xsel --clipboard

Auf der Linux-Konsole bietet GPM (General Purpose Mouse Manager) eine ähnliche Funktion, allerdings nur für Text. Das Einfügen erfolgt auf der Linuxkonsole mit der Rolltaste der Maus beziehungsweise der mittleren Maustaste.

AmigaOSBearbeiten

Das Betriebssystem Amiga verwendet 256 Speicher für die Zwischenablage, sodass ein Nutzer mehrere Zwischenablagen zur gleichen Zeit nutzen kann. Diese werden in einem speziellen Speicherplatz aufbewahrt, der durch die AmigaDOS Zuweisung CLIPS: definiert ist.[30]

AndroidBearbeiten

Android stellt ein Framework bereit, das ein Objekt zwischenspeichert und systemweit verfügbar macht. Während einfacher Text direkt gespeichert wird, werden komplexe Datenstrukturen als Referenz abgelegt. Das Objekt gehört zu einer von drei verschiedenen Arten:[31]

Der Inhalt des Clipboards kann nur durch Anwendungen oder das System verwendet werden.

Entwickler können die Klasse ClipboardManager benutzen, um das Kopieren und Einfügen von Daten zu steuern.[32]

iOSBearbeiten

Die Zwischenablage in iOS hat den Namen „Pasteboard“ und hat eine ähnliche Funktionsweise wie das Pendant in macOS. Applikationen können weitere Pasteboards mit Hilfe von Instanzen der UIPasteboard Klasse erstellen. Diese können privat oder öffentlich gesetzt werden. Eine Instanz kann einen oder mehrere Einträge mit verschiedenen Formatierungen, die durch Uniform Type Identifiers festgelegt wurden, enthalten.[33][34]

Ähnlich zu Android können die Daten der Zwischenablage nicht über die GUI des Betriebssystems erreicht werden. Nur Anwendungen und das System selbst können auf diese zugreifen.

APIsBearbeiten

Für viele Programmiersprachen gibt es Bibliotheken und APIs, die eine einfache Zugriffsmöglichkeit auf die Zwischenablage bereitstellen.

JavaScriptBearbeiten

JavaScript stellt eine Schnittstelle über ein Event (ClipboardEvent) bereit, die ein Lesen und Setzen von Daten erlaubt.[35][36] Dies wird aber nicht von jedem Browser unterstützt, da eine Manipulation dieses Speichers ein Sicherheitsrisiko bedeuten kann.

QtBearbeiten

Das Framework für plattformübergreifende Benutzerschnittstellen Qt wird unter anderem von Python und C++ benutzt. Qt enthält durch die Klasse QClipboard, eine Möglichkeit auf die verschiedenen Zwischenablagen Schnittstellen der Betriebssysteme zuzugreifen.[37] Dadurch können gewöhnliche Datentypen in der Zwischenablage über Funktionen erreicht werden. Jedes gespeicherte Element wird mittels MIME typisiert und kann somit ausgelesen sowie in einen bestimmten Datentyp gespeichert werden.

Erweiterungen der ZwischenablageBearbeiten

 
Ditto,[38] eine alternative Zwischenablage, die mit GPLv3 lizenziert ist.

Clipboard Manager fügen zu der bereits integrierten Zwischenablage weitere Funktionen hinzu, sodass der Nutzer den Speicher verändern kann. Viele Anwendungen dieser Art können mehrere Einträge zwischenspeichern und einfügen. Dabei kann der letzte Eintrag trotzdem wie üblich benutzt werden. Des Weiteren wird dem Nutzer oft die Möglichkeit gegeben, den Verlauf der Speichereinträge zu sehen, zu selektieren, zu editieren, in andere Formate zu konvertieren und zu durchsuchen.

Da die meisten Betriebssysteme (Windows, macOS, Linux, X11, Android, iOS) den Inhalt der Zwischenablage nicht in den Festspeicher ablegen, wird dieser gelöscht sobald sich der Nutzer abmeldet oder das System neustartet. Deswegen implementieren Clipboard Manager sowie Anwendungen wie der Texteditor Emacs häufig eine persistente Speicherung.

WeblinksBearbeiten

EinzelnachweiseBearbeiten

  1. FOCUS Online: Zwischenablage. In: FOCUS Online. (focus.de [abgerufen am 9. Oktober 2018]).
  2. Microsoft: Clipboard Operations. Abgerufen am 9. Oktober 2018 (amerikanisches Englisch).
  3. Sarang B. Kimmatkar: Extending functionalities of default clipboard.. In: (IJCSIT) International Journal of Computer Science and Information Technologies 5. 6, 2014.
  4. dotnet-bot: Übersicht über Drag & Drop. Abgerufen am 9. Oktober 2018.
  5. a b Larry Tesler: A personal history of modeless text editing and cut/copy-paste. In: Interactions. Band 19, Nr. 4, 1. Juli 2012, ISSN 1072-5520, S. 70–75, doi:10.1145/2212877.2212896.
  6. Larry Tesler: A User Experience Retrospective. Abgerufen am 10. Oktober 2018.
  7. Larry Tesler: THE LEGACY OF THE LISA. MacWorld, September 1985.
  8. What is clipboard hijack attack? – Definition from WhatIs.com. Abgerufen am 10. Oktober 2018.
  9. Pastejacking im Browser: Codeausführung per Copy and Paste. Golem.de, abgerufen am 10. Oktober 2018.
  10. github.com/dxa4481/Pastejacking. Abgerufen am 10. Oktober 2018.
  11. Sascha Fahl, Marian Harbach, Marten Oltrogge, Thomas Muders, Matthew Smith: Hey, You, Get Off of My Clipboard. In: Financial Cryptography and Data Security. Springer Berlin Heidelberg, Berlin, Heidelberg 2013, ISBN 978-3-642-39883-4, S. 144–161, doi:10.1007/978-3-642-39884-1_12.
  12. Using a password manager on Android? It may be wide open to sniffing attacks. Ars Technica. Abgerufen am 10. Oktober 2018.
  13. heise online: Android: Passwort-Manager mit Sicherheitslücken. Abgerufen am 9. Oktober 2018.
  14. Clipboard Formats (Windows) (en)
  15. Standard Clipboard Formats (Windows) (en)
  16. HTML Clipboard Format (Internet Explorer) (en)
  17. Microsoft: Clipboard Operations. Abgerufen am 9. Oktober 2018 (amerikanisches Englisch).
  18. Funktionen von CLIPBRD.EXE. In: PCWelt. Abgerufen am 9. Oktober 2018.
  19. Zwischenablage Synchronisation aktivieren deaktivieren oder löschen Windows 10 Deskmodder Wiki. Abgerufen am 3. Oktober 2018.
  20. sdwheeler: Get-Clipboard (Microsoft.PowerShell.Management) (en-us)
  21. sdwheeler: Set-Clipboard (Microsoft.PowerShell.Management) (en-us)
  22. Windowspage – Clip – Ausgabe von Befehlszeilenprogramme in die Zwischenablage kopieren. Abgerufen am 9. Oktober 2018.
  23. macOS Sierra: Geräteübergreifendes Kopieren und Einsetzen. Abgerufen am 9. Oktober 2018.
  24. using terminal to copy a file to clipboard. Abgerufen am 9. Oktober 2018.
  25. Zwischenablage › Wiki › ubuntuusers.de. Abgerufen am 9. Oktober 2018.
  26. clipboards-spec. freedesktop.org. Abgerufen am 16. August 2014.
  27. a b X11: Wie funktioniert „das“ Clipboard? Abgerufen am 9. Oktober 2018.
  28. a b xclip › Wiki › ubuntuusers.de. Abgerufen am 9. Oktober 2018.
  29. xsel › Wiki › ubuntuusers.de. Abgerufen am 9. Oktober 2018.
  30. Clipboard Device – AmigaOS Documentation Wiki (en)
  31. Copy and Paste – Android Developers (en)
  32. ClipboardManager – Android Developers. Abgerufen am 9. Oktober 2018 (englisch).
  33. Pasteboard (en)
  34. Uniform Type Identifier (en)
  35. Clipboard API and events – ClipboardEvent.
  36. Clipboard API and events – Synchronous Clipboard API (en)
  37. QClipboard Class – Qt GUI 5.11. Abgerufen am 10. Oktober 2018 (englisch).
  38. Ditto