7. Persistenz, Autorisierung, Cookies
7.5 Tracking
Tracking
Im vorherigen Teilkapitel hatten wir das Szenario betrachtet, dass der Nutzer auf einer vertrauenswürdigen Seite A eingeloggt ist, derzeit in einem anderen Browser-Tab eine weniger vertrauenswürdige Seite B besucht. Dabei bestand die Möglichkeit, dass Seite B ohne Wissen des Nutzers gewisse URLs der Seite A aufruft, und dann bei diesen Requests eventuell Cookies mitgeschickt werden. Dies barg die Gefahr, dass die Seite B auf Server A ungewollte Aktionen auslöst (ungewolltes Ausloggen haben wir gesehen; ungewollte Banktranfsers konnten wir uns zumindest vorstellen). In diesem Teilkapitel geht es nun um ein fast umgekehrtes Szenario. Der Nutzer ist oder war auf Seite A eingeloggt, vertraut dieser Seite aber nicht unbedingt. Seite A könnte zum Beispiel ein Online-Händler sein, bei dem wir eine Bestellung aufgegeben haben. Nun sind wir auf einer Seite B, die Werbefläche verkauft. Unter den Werbekunden ist zufällig Seite A. Lädt nun der Nutzer die Seite B, so wird auf einer kleinen Werbefläche ein Bild von Seite A geladen. Wenn der Browser die Cookies, die für Seite A gespeichert sind, beim Request für das Bild mitschicken, so kann Seite A erkennen, dass ein ihr bekannter Nutzer dieses Bild geladen hat. Seite A weiß also: Nutzer XY, der gestern bei uns auf Seite B das Produkt Z gekauft und an die Adresse ... in der Stadt ... hat schicken lassen, hat heute soeben Seite A besucht.
Demo
Für die folgende Demo muss der Server
15-tracker/src/server-tracker-https.js
auf dem
Server 193.174.103.62
gestartet werden.
Hier ist ein Bild von einer Katze (nur vom HSZG-Netzwerk aus sichtbar, und nur wenn obiger Server läuft.)
Leider klappt die Demo nicht so ganz, weil server-tracker-https.js
mit
HTTPS läuft, Ihr Browser aber das Zertifikat nicht erkennt bzw. nicht zuordnen kann.
Einfach, weil mein Server kein richtiges HTTPS-Zertifikat hat. Ein Online-Händler aber hätte
sicher eins. Tun wir also so, als hätte der Server ein gültiges Zertifikat. Hierzu
klicken Sie mit der rechten Maustaste auf das Bild und wählen open in new tab.
Dann weist Sie der Browser darauf hin, dass es keine private Verbindung sei. Sagen Sie dem
Browser, er solle die Datei dennoch laden (was Sie da genau klicken müssen, hängt vom
Browser ab).
In der Konsole, wo server-tracker-https.js
läuft, sehen wir nun Meldungen der
folgenden Form:
0.6164615487835605 visited 07-04-csrf.html,07-04-csrf.html,index.html,index.html,07-04-csrf.html,07-04-csrf.html,07-04-csrf.html,07-04-csrf.html,07-05-tracking.html
0.8499715725291506 visited 07-04-csrf.html
Übungsaufgabe
Fügen Sie dem Login-Server 13-login-server.zip
eine Tracker-Funktion hinzu: wenn ein Nutzer eingeloggt ist (oder mit dem gleichen Browser
einmal bereits eingeloggt war) und später dann cat.jpg
geladen wird (auch wenn
es
auf einer fremden Webseite mit z.B. als Werbung eingebunden ist), soll der Server
erkennen,
um welchen User es sich handelt und welche Seite dieser angesurft hat:
2024-01-05 11:48:49 user 'dominik' visited page https://trueconspiracytheories.de/oberlausitz/reptiles.html
2024-01-05 11:50:13 user 'erika' visited page https://rezeptfrei.science/oxycontin.html
Sie müssen für dieses Experiment mindestens zwei Server (auf unterschiedlichen Domains)
laufen lassen.
Den Login-Server beispielsweise auf localhost
und einen
weiteren, der rezeptfrei.science
repräsentieren soll, auf
127.0.0.1
.
Auch müssen Sie erreichen, dass beim Laden des Bildes cat.jpg
alle Cookies
mitgeschickt werden. Wie ging das nochmal? Lesen Sie im vorherigen Kapitel nach.