Gefälschte Zugriffe im Netz [Hintergrund]

Teil 3: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe

Das Grundgerüst des benötigten Formulars, hier am Beispiel von Börsentransaktionen, könnte zum Beispiel so aussehen:

<form action="Aktien_kaufen.php" method="post"><dl><dt><label for="aktiensymbol">
Aktiensymbol:</label></dt><dd><input type="text"
name="aktiensymbol" id="aktiensymbol" /></dd><dt><label for="anzahl">Anzahl:</label></dt><dd><input type="text" name="anzahl"
id="anzahl" /></dd><dd><input type="submit"
value="Kaufen" /></dd></dl></form>

Dieses Formular wird nur einem zuvor authentifizierten Benutzer angezeigt. Dennoch könnte ein Angreifer mittels XSRF einen Aktienkauf auslösen, sollte es ihm gelingen, einen bereits eingeloggten Benutzer zum Abschicken von Formulardaten an das Skript Aktien_kaufen.php zu bringen. Um einen XSRF-Angriff zu verhindern, wird in dieses Formular ein einmaliger Token (ein Formularschlüssel) eingebaut.

Schritt 2. Zum Erzeugen und Speichern eines eindeutigen Formularschlüssels kommt eine PHP-Klasse zum Einsatz. Hierzu erstellen Sie eine Datei namens formkey.class.php und platzieren Sie diese im Dokumentenverzeichnis des Webservers.

Da jede einzelne Webseite nur einen einzigen Formularschlüssel enthalten darf, könnten Sie auch einen Singleton der PHP-Klasse einsetzen. Der Code zum Erstellen des Formularschlüssels in der PHP-Datei formkey.class.php könnte so aussehen:

class formKey {
private $formKey;
private $alter_formKey;
private function erzeugeKey() {
$ip = $_SERVER['REMOTE_ADDR'];
$uniqid = uniqid(mt_rand(), true);
return md5($ip . $uniqid);
}

Der neu erzeugte Formularschlüssel wird in der Variable $formKey erfasst und der alte Formularschlüssel - falls existent - in $alter_formKey abgespeichert. Mehr dazu im Schritt 5. Das Erstellen eines einmaligen, nicht zu erratenden Formularschlüssels übernimmt die Funktion erzeugeKey().

Hierzu wird im ersten Schritt die IP-Adresse des Anwenders ermittelt, von dem die Anfrage herausgeht, und diese dann mit einer einmaligen Identifikationszahl zu einem MD5-Hash verarbeitet. Dadurch wird verhindert, dass sich das Resultat erraten lässt.Für das Errechnen der Zufallszahl zeichnet statt rand() die Funktion mt_rand() verantwortlich, weil sie bessere Zufallszahlen liefert. Die Option true sogt für eine höhere Länge der Zeichenkette.

Sicherheit: Cross Site Request Forgery

© Archiv

Mittels OWASP CSRF Tester können Sie Ihre Webseiten hinsichtlich CSRF-Risiken überprüfen.

Schritt 3. Der so erzeugte Schlüssel muss in das Formular eingefügt werden. Die benötigte Funktion outputKey() vollzieht dies in drei Teilschritten: Sie initiiert die Erzeugung des Formularschlüssels, speichert ihn für die Dauer der Sitzung ab und gibt ihn aus. Erzeugen und Speichern des Schlüssels innerhalb der Klasse erfolgt mittels:

$this->formKey = $this->erzeugeKey();

Speichern des Formularschlüssels in einer Sitzung:

$_SESSION['form_key'] =
$this->formKey;

Ausgabe des Formularschlüssels:

echo "<input type='hidden'
name='form_key' id='form_key' value='".$this->formKey."' />";

Die Funktion outputKey() nimmt also die folgende Form ein:

public function outputKey() {
$this->formKey = $this->erzeugeKey();
$_SESSION['form_key'] =
$this->formKey;
echo "<input type='hidden'
name='form_key' id='form_key' value='".$this->formKey."' />";
}

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".