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:

© 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 lesen

Chronologische Liste und Netflix-Links -

Neuerscheinungen in der Übersicht -

Vorschau auf Film- und Serien-Highlights -

Mehr zum Thema

Webdesign

Adobe Illustrator wird im Webdesign immer beliebter. Wie Sie das Tool richtig einsetzen, erfahren Sie hier.
Facebook

Was sind die Implikationen für Unternehmen und Endanwender bei Facebooks neuer Suche Graph Search?
Online-Recht

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.
Online-Recht in der Cloud

Dateien werden immer häufiger in der Cloud bereitgestellt. Rechtlich ist das jedoch durchaus problematisch. Wir klären über das Urheberrecht in der…
E-Commerce-Logistik

Für den Erfolg eines Online-Shops sind zahlreiche Faktoren verantwortlich. Neben Produktvielfalt und Darstellung der Waren gehört auch die Logistik.