Gefälschte Zugriffe im Netz [Hintergrund]

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

Schritt 4. Das Formular aus dem ersten Schritt kann jetzt mit dem FormularschlüsSicherheitstools sel gesichert werden. Hierzu fügen Sie der PHP-Datei oberhalb der doctype- und head-Tags den folgenden Quelltext hinzu:

session_start();
require('formkey.class.php');
$formKey = new formKey();

Mittels session_start() wird die Sitzung initialisiert, damit der zu erzeugende Schlüssel abgespeichert werden kann. Hierzu wird die eben erstellte Klasse aus formkey.class.php mittels require eingebunden. Danach wird die Klasse mit dem Aufruf des neuen Formularschlüssels initialisiert und in $formKey erfasst. Nun gilt es lediglich, das Formular mit dem Formularschlüssel zu versehen:

<?php $formKey->outputKey(); ?>
in das Formular eingefügt:<form action="Aktien_kaufen.php" method="post"><dl><?php $formKey->outputKey(); ?><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>

Schritt 5. Da die Funktion erzeugeKey() die Sitzungsvariable überschreibt, müssen wir einen Konstruktor zu unserer PHP-Klasse hinzufügen, der beim Aufruf der PHP-Klasse zum Einsatz kommt. Der Konstruktur wird den vorigen Schlüssel - falls vorhanden - in einer Klassenvariable abspeichern, bevor ihn der neue Formularschlüssel überschreiben kann. Auf diese Weise steht der zuletzt gültige Formularschlüssel für eine Validierung zur Verfügung. Die PHP-Klasse wird um die folgende Funktion ergänzt:

function __construct() {
if(isset($_SESSION['form_key'])) {
$this->alt_formKey = $_SESSION['
form_key']; }
}

Der Name des Konstruktors beginnt mit einem Unterstrich, damit der Quelltext leichter zu lesen ist. Beim Aufruf des Konstruktors erfolgt erst einmal eine Prüfung, ob die Sitzung überhaupt eingerichtet wurde und falls ja, wird der alte Schlüssel der Sitzung lokal in der Variable alt_formKey erfasst. Um den Formularschlüssel validieren zu können, erzeugen Sie jetzt eine Funktion innerhalb der Klasse.Da Sie auf diese Funktion auch von außerhalb der Klasse zugreifen werden, sollten Sie diese als public deklarieren. Der Zweck der Funktion besteht in der Validierung des POST-Wertes des Formularschlüssels, indem dieser mit dem gespeicherten Wert des Formularschlüssels aus der alten Sitzungsvariable verglichen wird. Die benötigte Funktion wird nun wie folgt der PHP-Klasse hinzugefügt:

Sicherheit: Cross Site Request Forgery

© Archiv

Ohne die passenden Sicherheitsvorkehrungen wie dynamisch erzeugte Tokens kann ein harmlos aussehendes Formular Angreifern praktisch uneingeschränkten Zugriff auf interne Funktionen der Web-Applikation gewähren, die authentifizierten Benutzern vorbehalten sein sollten.
public function validieren() {
if($_POST['form_key'] ==
$this->alt_formKey) { return true; }
else { return false; }
}

Ist der Schlüssel gültig, liefert die Funktion den Rückgabewert true, andernfalls false.

Die Validierung des Formularschlüssels erfolgt durch den Aufruf der gerade erstellten Funktion validieren(). Zu beachten ist hierbei lediglich, dass Sie die Validierung erst nach der POST-Anfrage durchführen dürfen. Hierzu fügen Sie hinter die folgende Zeile

$formKey=new formKey();

diesen Quelltext ein:

$error = 'Kein Fehler';
if($_SERVER['REQUEST_
METHOD'] == 'post') {
if(!isset($_POST['form_key']) ||
!$formKey->validieren()) {
$statusmeldung = 'Fehler'; }
else { $statusmeldung = 'kein Fehler
aufgetreten.'; }
}

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​".