Mehr Datenschutz bei :visited

Kyra Seevers
Kyra Seevers

Veröffentlicht: 2. April 2025

Was passiert, wenn ich auf einen Link klicke? Er wird lila.

Seit den Anfängen des Internets verwenden Websites die CSS-:visited-Auswahl, um benutzerdefinierte Stile auf Links anzuwenden, auf die Nutzer bereits geklickt haben. Mit der Auswahl :visited können Websites die Nutzerfreundlichkeit verbessern und Nutzern die Navigation im Web erleichtern. Mit der Zeit hat sich die Anpassungsfähigkeit der besuchten Links jedoch erhöht und damit auch die Anzahl der von Sicherheitsforschern entdeckten Angriffe.

Diese Angriffe können Aufschluss darüber geben, welche Links ein Nutzer besucht hat, und Details zu seinen Webaktivitäten offenlegen. Dieses Sicherheitsproblem besteht seit über 20 Jahren und Browser haben verschiedene Notlösungen implementiert, um diese Angriffe auf die Verlaufserkennung zu bekämpfen. Durch diese Maßnahmen werden die Angriffe zwar verlangsamt, aber nicht verhindert.

Ab Chrome 136 ist Chrome der erste große Browser, der diese Angriffe obsolet macht. Dazu wird der :visited-Linkverlauf partitioniert.

Damit angezeigt werden kann, welche Links Sie zuvor besucht haben, muss der Browser die von Ihnen besuchten Seiten im Laufe der Zeit im Blick behalten. Das wird als :visited-Verlauf bezeichnet. Mit der CSS-:visited-Auswahl können Sie besuchte Links anders formatieren als nicht besuchte:

:visited {
  color: purple;
  background-color: yellow;
  }

Bisher war der :visited-Verlauf nicht partitioniert. Das bedeutete, dass es keine Einschränkungen gab, wo der :visited-Verlauf mithilfe der :visited-Auswahl angezeigt werden konnte. Wenn Sie auf einen Link geklickt haben, wird er auf jeder Website, auf der dieser Link angezeigt wird, als „besucht“ angezeigt. Dies war der Hauptdesignfehler, der es Angreifern ermöglichte, Informationen über den Browserverlauf des Nutzers zu erhalten.

Dazu ein Beispiel: Sie befinden sich auf Website A und klicken auf einen Link, um zu Website B zu gelangen. In diesem Szenario wird Website B Ihrem :visited-Verlauf hinzugefügt. Später besuchen Sie die Website „Böse“, die ebenfalls einen Link zu Website B erstellt. Ohne Partitionierung würde die Website „Böse“ diesen Link zu Website B als :visited anzeigen, auch wenn Sie auf der Website „Böse“ nicht auf den Link geklickt haben. Dann könnte die schädliche Website mithilfe eines Sicherheits-Exploits herausfinden, ob der Link als :visited formatiert war, und so erfahren, dass Sie Website B in der Vergangenheit besucht haben. So werden Informationen zu Ihrem Browserverlauf weitergegeben.

Wenn Sie vor der Partitionierung auf einen Link geklickt haben:

Der Nutzer wird auf der Seite „website-a.com“ angezeigt, auf der ein Link zu „website-b.com“ zu sehen ist.

Er würde auf jeder Website, auf der dieser Link angezeigt wird, als „besucht“ angezeigt.

Die Website „website-a.com“ wird neben „website-evil.com“ angezeigt. Auf beiden Seiten wird derselbe Link zu „website-b.com“ angezeigt und als besucht gekennzeichnet.

Durch die Partitionierung wird Ihr Browserverlauf geschützt, da ein Link nur dann als besucht angezeigt wird, wenn Sie auf dieser Website schon einmal darauf geklickt haben. Wenn Sie mit dieser Website noch keine Interaktionen hatten, werden ihre Links nicht als :visited formatiert.

Betrachten Sie das vorherige Beispiel, aber mit aktivierter Partitionierung. Sie surfen auf Website A und klicken auf einen Link, um zu Website B zu gelangen. Die Kombination „Website A + Website B“ wird in Ihrem :visited-Verlauf gespeichert. Wenn Sie also die Website „Böse“ besuchen, wird der Link zu Website B nicht als :visited angezeigt, da er nicht mit beiden Teilen des Eintrags „Website A + Website B“ übereinstimmt (der Kontext, in dem Sie ursprünglich auf den Link geklickt haben). Da auf Site Evil kein Browserverlauf angezeigt wird, können keine Exploits genutzt werden. Ihr Browserverlauf ist also sicher.

Wenn Sie nach der Partitionierung auf einen Link klicken, geschieht Folgendes:

Der Nutzer befindet sich auf der Seite „website-a.com“, auf der ein Link zu „website-b.com“ angezeigt wird.

Sie wird nur dort als :visited angezeigt, wo du sie zuvor angeklickt hast.

Die Website „website-a.com“ wird neben „website-evil.com“ angezeigt. Auf beiden Seiten wird derselbe Link zu „website-b.com“ angezeigt. Nur der Link auf „website-a.com“ ist als besucht gekennzeichnet.

Kurz gesagt: Bei der Partitionierung werden Ihre Links mit zusätzlichen Informationen dazu gespeichert, wo sie angeklickt wurden. In Chrome sind das: Link-URL, Website der obersten Ebene und Frame-Ursprung. Wenn die Partitionierung aktiviert ist, ist Ihr :visited-Verlauf keine globale Liste mehr, die von jeder Website abgefragt werden kann. Stattdessen wird Ihr :visited-Verlauf in Abhängigkeit vom Kontext, in dem Sie den Link ursprünglich aufgerufen haben, „partitioniert“ oder getrennt.

Zeigt den Informationsfluss über die Link-URL, die Website der obersten Ebene und den Frame-Ursprung an.

Wenn Sie im Internet surfen, klicken Sie möglicherweise auf viele Links, die alle auf verschiedene Unterseiten derselben Website verweisen. Wenn Sie beispielsweise nach verschiedenen Arten von Metallen suchen, können Sie die Site.Wiki-Seiten für „Chrom“ und „Messing“ aufrufen.

Bei einer starren Partitionierung würden Nutzer auf der Seite Site.Wiki für Gold die Links zu den Seiten für Chrom und Messing nicht als :visited sehen. Das liegt daran, dass der Nutzer auf jede dieser Seiten über eine Website der obersten Ebene geklickt hat, die nicht mit der Site.Wiki-Seite für Gold übereinstimmt.

Auch wenn der Nutzer über metals.com eine Reihe von Links auf site.wiki besucht hat, werden sie nicht als besucht formatiert, da der Klick von metals.com stammt.

Um die Nutzerfreundlichkeit in diesem Szenario zu verbessern und gleichzeitig den Datenschutz und die Sicherheit der Partitionierung zu gewährleisten, haben wir eine Ausnahme für Selbstverweise eingeführt. Kurz gesagt: Eine Website kann ihre eigenen Unterseiten als :visited anzeigen, auch wenn diese Links in diesem Kontext noch nie angeklickt wurden. Da Websites andere Methoden haben, zu erfassen, ob ein Nutzer ihre Unterseiten besucht hat, werden diesen Websites durch die Einführung von Selbstverweisen keine neuen Informationen zur Verfügung gestellt. Die Partitionierung schützt weiterhin vor websiteübergreifendem Tracking und erzwingt die Same-Origin-Richtlinie. Wichtig: Dies gilt nur für Links zu den eigenen Unterseiten einer Website. Links zu Websites von Drittanbietern oder in iFrames von Drittanbietern sind von dieser Ausnahme ausgenommen.

Nach der Ausnahme für selbstverknüpfte Seiten:

Selbstverweise werden jetzt als besucht markiert, wenn sie Unterseiten derselben Website sind.

Implementierungsstatus

Diese Verbesserungen der Sicherheit und des Datenschutzes bei :visited sind ab Chrome-Version 136 verfügbar. Chrome ist der erste Browser, der diese Schutzmaßnahmen für Nutzer implementiert.

Feedback geben und erhalten