Datenschutz im Web

HTML-Baum

imrahmen.html

Im Iframe sitzt die prekäre Seite, die die URLs abfragt. Sie enthält zuerst die Linkliste, wobei jeder Link mit einer ID versehen ist, die wir mit dem Skript abfragen können. Zum Beispiel:

<a id="l1" href="http://www.magnus.de">Magnus</a><br>

Dann brauchen wir das Script stiltest(), das beim Laden der Webseite startet:

<body onload="stiltest()">

jsskript.js

image.jpg

© PC Magazin

Das JavaScript erkennt, welche Farbe ein Link hat: Rot, Grün, Grün (hier im Internet-Explorer).

Das Skript selbst haben wir ausgelagert in die Datei jsskript.js. Hier findet nun der eigentliche Diebstahl statt. Link für Link prüfen wir, welchen aktuellen Stil sie besitzen. Um mit JavaScript auf ein Element im HTML-Baum zugreifen zu können, eignet sich der Befehl document.getElementById(,id').

Die ID haben wir den einzelnen Links in der HTML-Seite ja verpasst, in unserem Beispiel document.getElementById(,l1'). Als Ergebnis bekommen wir den Link selbst, was wir weiter unten benötigen, aber derzeit interessiert uns der aktuelle Stil des Links: Rot oder Grün? Bei dessen Ermittlung gehen Firefox und IE mal wieder verschiedene Wege.

Bei Firefox heißt der Parameter window.getComputedStyle, beim IE einfach nur .currentStyle. In beiden Fällen muss der Programmierer dem Browser noch mitteilen, welchen Stil er sehen möchte, in unserem Fall die Farbe: color. Beim IE sieht der ganze Ausdruck so aus:

document.getElementById("l1").currentStyle.color

Beim Firefox hingegen so:

window.getComputedStyle(document.
getElementById("l1"), "").getPropertyValue("color")

Auch das Ergebnis sieht verschieden aus: Der IE liefert das, was wir in die CSS-Datei geschrieben hatten: red oder green. Firefox hingegen den RGB-Zahlenwert der Farbe rgb(255, 0, 0) oder rgb(0, 128, 0).

Wir beginnen das Skript also mit einer Fallunterscheidung IE/Firefox und testen bei jedem Link den aktuellen Stil. Falls er besucht (red oder rgb(255, 0, 0)) ist, setzen wir die Variable xy auf besucht. Ein Beispiel für den IE:

if ((x2 = document.getElementById
("l2").currentStyle.color) == "red") x2= "besucht";

image.jpg

© PC Magazin

Das PHP-Skript meldet die IP-Adresse des Besuchers und welche Seiten dieser besucht hat.

Anschließend lesen wir die Links selbst wie oben bereits angedeutet mit document.getElementById(,id') in weitere Variablen (x11 usw.). In unserem Beispielskript auf der DVD haben wir als Variablen drei Links (x11, x22, x33) und drei Besucht-Zustände (x1, x2, x3), die wir dem PHP-Skript phpskript.php auf dem Server übergeben. Die Übergabe erfolgt mit den Parametern para1, para2, para3 für die Zustände und para11, para22, para33 für die Links selbst.

Der Aufruf erfolgt mit dem Befehl self.location.href. Die Adresse ist der Name des Skripts ./phpskript.php, gefolgt von den Parametern. Die Parameter leitet der PHP-Programmierer mit einem ? ein, und jeder Parameter ist mit einem & getrennt, zum Beispiel ./phpskript.php?para1=besucht&para11=http://www.magnus.de. In unserem Java Skript sieht das so aus:

self.location.href = "./phpskript.php?para1=" + x1 + "&para11=" + x11 + "&para2=" + x2 + "&para22=" + x22 + "&para3=" +x3 + "&para33=" +x33;

phpskript.php

Im PHP-Skript besorgen wir uns zuerst die IP-Adresse des Besuchers sowie Datum und Uhrzeit des Besuchs:

$ip = $_SERVER["REMOTE_ADDR"];
$uhr = date("H:i",time());
$datum = date("d.m.Y",time());

Nun wollen wir auf die Parameter zugreifen, die das JavaScript mit der URL übergeben hat. Das erfolgt mit dem Befehl $_GET["xyz"] in unserem Fall zum Beispiel mit $_GET["para11"]. Die Zustände (besucht oder nicht besucht) fanden sich in den Parametern para1 bis para3, die wir nun vergleichen: Wenn besucht, dann schreibt das Skript den Satz: IP-Adresse xyz hat www.xyz.de besucht.

Andernfalls schreibt es den Satz IP-Adresse xyz hat www.xyz.de nicht besucht. Für jede Webadresse landet solch ein Satz in einer Variable y1 bis y3. Ein Beispiel:

if ($_GET["para3"] == "besucht") $y3 =
"$ip hat ".$_GET["para33"]." besucht";
else $y3 = "$ip hat ".$_GET["para33"]."
nicht besucht";

Mit dem Befehl print geben wir die Ergebnisse einmal am Bildschirm aus, was der Browser im Iframe der Webseite darstellt:

10.01.2011 14:03
217.64.171.188 hat http://www.magnus.de/ nicht besucht 217.64.171.188 hat http://www.tagesschau.de/ besucht 217.64.171.188 hat http://www.spiegel.de/ nicht besucht

Bösartiger ist es, wenn der Serverbetreiber die Ergebnisse in einer Datei ergebnisse.txt auf dem Server speichert. Der Programmierer öffnet diese Datei im Skript mit fopen:

$ergebnisse = fopen("./ergebnisse.txt","a");

Der Parameter a gibt dabei an, dass PHP neue Inhalte unten am Dateiende anhängt. Dann schreibt der Programmierer die Ergebnisse hinein und schließt sie wieder:

fwrite($ergebnisse,$datum." ".$uhr."\
r\n".$y1."\r\n".$y2."\r\n".$y3."\r\n\r\n");
fclose($ergebnisse);

\r\n bilden dabei den Windows-üblichen Zeilenumbruch.

Mehr zum Thema

Amazon Blitzangebote
Technik-Deals

Die Highlights der Amazon Blitzangebote - heute u.a. dabei: Samsung Galaxy A5 (2017)​​​​​​, Sony A77 II DSLR, Asus Notebook und mehr.
xXx: Die Rückkehr des Xander Cage​
Vorschau auf Film- und Serien-Highlights

Amazon Prime Video lockt im September 2017 mit Film-Highlights wie "xXx: Die Rückkehr des Xander Cage​" und neuen Folgen von "Fear the Walking Dead "
Twitch Prime Loot für Heroes of the Storm
Gratis Games mit Amazon Prime

Amazon Prime Kunden erhalten neuen Gratis-Loot über Twitch Prime. Neu im August sind Spielinhalte für Madden NFL 18.
Gamescom 2017 Impression
Video
Age of Empires 4, Project Cars 2, und mehr

Die Video- und Computerspielmesse Gamescom findet vom 22. bis 26. August in Köln statt. Wir zeigen ihnen Trailer und mehr zu den Spiele-Highlights.
Sony Alpha 9 mit Objektiv
Praxis-Test und Tipps

Was leisten Sonys Überflieger A 9 und der 42-MP-Vollformater A7R Mark II in der Praxis? Wir stellen Funktionen vor und geben Tipps.