CSS :visited - Einschränkung der Gestaltung nach gestopftem Sicherheitsleck
Freitag, 11 Juni 2010 17:31 MET
- dieser Artikel

- CSS :visited - Einschränkung der Gestaltung nach gestopftem Sicherheitsleck [hyperkontext | Weblog]
- Kommentare 5
visited – besuchte Hyperlinks
Es ist eine der ältesten Konventionen im Web, dass sich der Browser bereits besuchte Links merkt und in einer anderen Farbe darstellt. Das ist auch die Standardeinstellung ganz ohne CSS (Cascading Style Sheets).
Mit der CSS-Pseudoklasse :visited eröffnen sich sämtliche Gestaltungsmöglichkeiten, die vom Browser bereits besuchten Hyperlinks visuell zu gestalten. Leider entsteht damit – auch ganz ohne Javascript – ein Problem, das böse gesinnte Menschen ausnutzen (können).
Sicherheitsleck durch :visited
Seit längerem ist bekannt, dass es mit einem präparierten Stylesheet möglich ist, gezielt ablesen zu können, welche Links ein bestimmter Browser (Besucher) bereits schon kannte, bevor er auf die präparierte Seite traf.
Hier muss klargestellt werden:
Per CSS ist es lediglich möglich, gezielt Adressen abzufragen und keine Linkliste auszulesen, wie per Javascript möglich.
Das ist möglich, indem wir zum Beispiel mit der Angabe a#muster1:visited {background-image: url(muster1.gif)} ein Hintergrundbild aufrufen und an Hand dieses Aufrufes in den Logeinträgen feststellen können, dass der Besucher eine bestimmte Adresse bereits vor Besuch unserer Site aufgerufen hatte.
Auf diese Art könnten wir nun eine Liste zusammenstellen, um zum Beispiel abzufragen, welche Logins bei Banken von diesem Programm offenbar durchgeführt werden. Dies kann entscheidende Information für weitere gezielte bösartige Attacken liefern.
Wie das genau funktioniert, erklären diese zwei Artikel sehr detailliert:
Die einzigen Möglichkeiten sich bewusst dagegen zu schützen wäre
- nur via »Privaten Modus« (in fast allen modernen Programmen eine einstellbare Option) zu surfen, weil dort keine History gespeichert wird oder
- je nach Browser die Möglichkeit nutzen, besuchte Links nicht aufzeichnen lassen. Ist bei fast allen auf verschiedene Arten möglich, siehe Angaben der Hersteller oder
- komplett ohne Javascript und CSS surfen.
Das sind natürlich alles nur Krücken und schränken den Komfort erheblich ein, zumal Lieschen und Maxilein Müller davon noch nie etwas gehört haben.
Das Wissen um dieses einfache Leck existiert schon lange (2002-05-28 erstmals dokumentiert), das Stopfen wurde aber lange nicht angegangen.
Anfang des Jahres 2010 machte sich David Baron von Mozilla da mal so seine Gedanken darüber: Preventing attacks on a user's history through CSS :visited selectors.
Leck wird gestopft
Seit dem Artikel von David Baron ist klar, das Leck wird im Firefox per Standardeinstellung gestopft, offenbar ab Version 3.7: privacy-related changes coming to CSS :visited.
Andere übernehmen das Prinzip, denn Safari 5 ist nun – bereits vor dem Firefox – der erste Browser, der bestimmte Anweisungen für besuchte Links nicht mehr zulässt. Über den Eintrag von Estelle Weyl wurde mir die tiefere Dimension der Sache erst bewusst:
Safari 5 Link selector: bug or security feature?
Google-Chrome wird das in Kürze wohl übernehmen (Webkit-Engine), Opera wird mit Sicherheit folgen und der angekündigte IE9 wird im Final-Release vielleicht auch diese CSS-Einschränkung eingebaut haben.
Konsequenz: Einschränkungen bei der Gestaltung von :visited
Wenn Browser also die von Mozilla erläuterte Art umsetzen, dann werden
-
mit der Pseudoklasse :visited nur mehr folgende Anweisungen verarbeitet:
- color,
- background-color,
- border-color, border-*-color,
- outline-color
Zusätzlich wird bei Farbangaben kein rgba(), hsla() oder transparent akzeptiert.
Anderes wird ignoriert beziehungsweise der Stil von den Angaben für unbesuchte Links übernommen, auch CSS3 Transitions und Hintergrundbilder.
-
alle Notationen hinter :visited ausnahmslos ignoriert. Zum Beispiel
a:visited:before,a:visited:active,a:visited+*odera:visited *.
Das hat Folgen für die (visuelle) Webgestaltung.
Beispielsweise ist es dann nicht mehr möglich, besuchte Links mit (verändertem) Zeichen oder Bild danach oder davor zu kennzeichnen.
Auch opacity oder lediglich die Angabe text-decoration:line-through in Kombination mit :visited wird ignoriert.
Kein Bug
Irritationen verzweifelter Webgestalter werden nicht ausbleiben, wenn in den nächsten Monaten nach Safari 5 nun Firefox ab Version 3.7 und weitere Hersteller diese Einschränkung einbauen. Es wird dann wohl viele Blogeinträge mit ähnlichem Inhalt wie oben geben.
Fast ironisch erscheint, wie manche postwendend den vermeintlichen »Bug« mit Javascript ausbügeln wollen.
Eine Aussage wird sich wohl zigfach wiederholen:
Es ist kein Bug, es ist ein Sicherheitsfix der Programmhersteller! Trotzdem gemäß Spezifikation die Gestaltungsmöglichkeiten für besuchte Links weitreichender sind.
- Abschnitt 1 von 1
Weitere Verweise zum Thema
- Plugging the CSS History Leak [Mozilla Security Blog]
- How to Detect the Social Sites Your Visitors Use [Aza Raskin]
- Safari purged of decade-old browser history leak [The Register]
- Firefox-Entwickler stopfen altes CSS-Leck [heise]
- History Stealing 2.0: Ich weiß, wo du wohnst [heise]
- Technikwürze 166 –
background-image und CSS Transitions in Zukunft nicht mit :visited stylebar
.
Externe Verweise dieses Artikels wurden zuletzt am 11. Juni 2010 auf Relevanz geprüft.
- Datum:
- veröffentlicht am 11 Juni 2010, 17:31 MET.
- Artikel:
- CSS :visited - Einschränkung der Gestaltung nach gestopftem Sicherheitsleck [hyperkontext | Weblog]
- Kurz-URL:
- http://hyperkontext.at/s/264
- Thema:
- Webgestaltung
- Stichworte:
- Browser, CSS, Sicherheit
- Reaktionen:
- Kommentare 5
Dieser Eintrag kann nicht mehr kommentiert werden.
Mögliche themenverwandte Artikel aus dem Weblog
Blättern (chronologisch)
- « neuerer Artikel
- Safari Reader: Lesemodus entblößt
- älterer Artikel »
- Mai 2010 im Kontext
Lüge als Prinzip