Inhalt
In meinem ersten Tutorial möchte ich euch heute vorstellen wie man einen Referer faken kann.
Als erstes will ich erstmal klären was ein Referer ist. Mit Hilfe des Referers können Webmaster mit den Sprachen HTML, Java-Script, PHP oder Perl feststellen von wo der Surfer kommt.
Hierzu ein kleines Beispiel: Du bist der Webmaster/Besitzer der Seite meinedomain.de und du integrierst auf deiner Seite ein Partnerprogramm von moremoney.com. Der HTML-Code den du von moremoney.com auf deiner Seite einbaust, schaut folgender masen aus:
<a href="http://www.moremoney.com/click.php?id=meinedomain.de" target="_blank"> <img src="http://www.moremoney.com/show.php?id=meinedomain.de" border="0" width="468" height="60"></a>
Durch den Einbau des Bildes http://www.moremoney.com/show.php?id=meinedomain.de stellt das Partnerprogramm fest, wieviele Surfer den Banner gesehen haben (auch Views genannt).
Klickt nun der Surfer auf das Bild so wird er auf die Seite http://www.moremoney.com/click.php?id=meinedomain.de gelangen. Hier kommt nun der Referer zum Einsatz. Das Partnerprogramm überprüft nun den Referer, falls der Referer nun meinedomain.de ist wird dir ein bestimmter Betrag auf deinem Account gut geschrieben, aber falls der Referer nicht meinedomain.de ist passiert erstmal nichts.
Da erfahrungsgemäss nicht viele Surfer auf diese Werbebanner klicken haben sich einige Webmaster gefragt wie sie nun ihr Guthaben in die höhe schrauben könnten.
Mit Hilfe von HTML, Java-Script, PHP und Perl gibt es verschiendene Arten den Surfer auf andere Seiten umzuleiten oder die Seiten im Hintergrund zu laden. Einige möchte ich hier aufführen
HTML:
<meta http-equiv="refresh" content="0; URL=http://www.meinedomain.de">
<iframe src="http://www.meinedomain.de" width="-1" height="-1" frameborder="-1"></iframe>
(Funktioniert nur bei dem Microsoft Internet Explorer)
<frameset rows="0%,*" border="0" frameborder="0">
<frame src="http://www.meinedomain.de" name="hidden" scrolling="no">
<frame src="hauptseite.htm" name="main" scrolling="auto">
</frameset>
Java-Script:
<script language="JavaScript">
onload="window.location='http://www.meinedomain.de'"
</script>
<body onUnLoad="window.open('http://www.meinedomain.de');">
PHP:
<?php
header("location:http://www.meinedomain.de");
?>
So diese ganzen Möglichkeiten jemanden umzuleiten sind ja ganz schön, aber jetzt kommt der Haken. Wenn jemand mit diesen Skripts umgeleitet wird, gibts keinen Referer und folglich auch kein Geld. Somit haben sich die Partnerprogrammbetreiber gegen Manipulationen geschützt. Aber wie es so ist mit allem was mit Computern zu tun hat, gibt es auch hier eine Lücke die nicht bedacht wurde.
Angenommen wir haben ein Formular was an eine bestimmte URL gesendet wird. Und ihr werdet es schon fast erraten haben, jetzt ist auf einmal der Referer vorhanden. Es ist nichts leichter als jetzt noch ein Java-Script zu schreiben was das Formular automatisch in einem versteckten Fenster absendet. Und hier präsentiere ich euch den HTML und Java-Script Code:
Und als letztes folgt eine kleine Erläuterung des Skriptes:
Zeile 1: Hier wird HTML-Dokument erstellt und wenn das Dokument fertig mit laden (onLoad="return fake()")wird die Funktion "fake" gestartet. Zeile 3: Das ist das eigentliche Formular was mit der Variable name="formular" als dieses deklariert wird. Im Gegensatz zu den eigentlichen Aufgaben eines Formulars, werden hier keine weiteren Daten gesendet.
Zeile 5-13: Hier die Java-Script-Funktion "fake" die das Formular namens "formular" in das Fenster "hidden" absenden soll.
Zeile 15: Hier wird ein Fenster erstellt in das das Formular angezeigt werden soll. Die Grösse des Fenster beträgt -1 mal -1 Pixel (im Klartext das Fenster ist unsichtbar). Der Name ist "hidden", damit das Formular kein neues Fenster öffnet ist es wichtig das der Name dieses Fensters der gleiche ist wie in Zeile 8 angegeben. Der Wert frameborder="-1" sorgt dafür das das Fenster keinen Rahmen bekommt, somit wird sichergestellt das niemand das Fenster sehen kann. Aber Achtung der Iframe-Befehl funktioniert nur bei dem Microsoft Internet Explorer.
Dieses Skript könnte zum Beispiel auf einer privaten Webseite eingesetzt werden, das zum Beispiel eine eigene IP-Sperre besitzt und bei jeder IP das Skript alle 30 Minuten einmal includet. Somit kann man fast sicher gehen das man unentdeckt bleibt!
Natürlich verstösst dieses Skript gegen die AGB's der Partnerprogramm-Anbieter und soll verständlicher weise auch nicht eingesezt werden. Sondern es soll viel mehr den Betreibern von Partnerprogrammen helfen neue Sicherheitslücken zufinden.
Um mit diesem Skript unentdeckt zubleiben, müsste man sich nur noch eine IP-Sperre bauen. Hier möchte ich nun auch dazu eine Lösung vorstellen.
Ich werde hier nur kurz auf den Source-Code eingehen.
In die Datei "data.txt" wird die IP des User, die aktuelle Zeit und eine zufällige Zahl (diese Zahl liegt zwischen 1 bis 10) gespeichert. Danach wird wieder eine Zufallszahl generiert wenn nun diese zweite gleich der ersten ist wird nun die "test.htm" eingefügt (includet), wobei das Fakeskript ausgeführt wird. Ist dies nun geschehen wird der User für 1800 Sekunden (gleich 30 Minuten) gesperrt. Sinn der ganzen Sache soll sein das nicht bei jedem Surfer das Skript beim ersten Besuch gleich ausgelöst wird und wenn dies geschieht soll es auch nur einmal ausgelöst werden.
Wenn diese beiden von mir gezeigten Skripte zum Beispiel bei einem CMS (Content-Management-System) wie PHPNuke richtig angewendet werden sehe ich keine grosse Chance mit einer technische Lösung so einen Betrug zuverhindern.
Eine Lösung wäre wenn der Partnerprogramm-Betreiber die Webseiten in unregelmässigen Zeitabständen manuell überprüft, was aber viel Zeit (und somit auch viel Geld) kosten würde und es wäre auch nicht gleich gewährleistet das es das Fake-Tool entdeckt.
Eine andere Lösung wäre , um die von mir gezeigten Skripte am Betrug zuhindern, man müsste mit PHP oder Perl die Übertragungsart auslesen. Hierzu möchte ich das letzte Skript in diesem Tutorial vorstellen:
Dies wäre ein weitere Möglichkeit sein Partnerprogramm vor Betrug zuschützen, aber man könnte das Formular auch mit der Übertragungsart "GET" absenden. Wenn ein Surfer auf den Link klickt wird immer die Übertragungsart "GET" mitgesendet somit kann man nur die Übertragungsart "POST" ausschliessen und es besteht immer noch kein 100%-iger Schutz.