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.
Was ist :visited
Link-Partitionierung?
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:
Er würde auf jeder Website, auf der dieser Link angezeigt wird, als „besucht“ angezeigt.
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:
Sie wird nur dort als :visited
angezeigt, wo du sie zuvor angeklickt hast.
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.
Wie sieht es mit Links zu anderen Seiten auf derselben Website aus?
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.
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:
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
- Der ursprüngliche Vorschlag.,
- Stellen Sie Fragen und beteiligen Sie sich an Diskussionen.
- Erstellen Sie einen Eintrag im Chromium-Tracker, wenn Sie der Meinung sind, dass etwas nicht wie erwartet funktioniert.