Gefälschte Zugriffe im Netz [Hintergrund]

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

2.2.2010 von Redaktion pcmagazin und Anna Kobylinska

ca. 2:20 Min
Ratgeber
  1. Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
  2. Teil 2: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
  3. Teil 3: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
  4. Teil 4: Erklärt: So nutzen Hacker Cross Site Request Forgery für Angriffe
  5. Teil 5: 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
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.
© Archiv
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

Marvel-Filme- und -Serien: Das ist die richtige Reihenfolge

Neuerscheinungen in der Übersicht

Netflix: Neue Filme und Serien

Vorschau auf Film- und Serien-Highlights

Amazon Prime Video: Neuheiten

Weiter zur Startseite  

Mehr zum Thema

internet, webdesign, adobe,  Illustrator, CS6

Webdesign

Webdesign in Adobe Illustrator CS6

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

Facebook stellte die neue Suche

Facebook

Facebooks Social Graph Search

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

Der BGH erklärt das Internet zur Lebensgrundlage.

Online-Recht

Darauf müssen Sie bei den AGB achten

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.

Online-Urheberrecht: Unser Ratgeber bietet Tipps für das Cloud-Recht.

Online-Recht in der Cloud

Wie sieht das Urheberrecht in der Wolke aus?

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

Logistik im E-Commerce: Prozesse rund um die Logistik.

E-Commerce-Logistik

Logistik im E-Commerce

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