Tutorials » Formulare absichern: Verwendung von CSRF-Schutz

Verwendung von CSRF-Schutz

Implementiere Cross-Site Request Forgery (CSRF)-Schutz, um zu verhindern, dass böswillige Websites Aktionen im Namen des Benutzers ausführen. Generiere und überprüfe CSRF-Token, um sicherzustellen, dass Formularanfragen nur von berechtigten Benutzern stammen.

Die Implementierung von CSRF (Cross-Site Request Forgery)-Schutz in PHP erfordert mehrere Schritte. Hier ist eine praktische Anleitung, wie du CSRF-Schutz in deine PHP-Anwendung integrieren kannst:

Generiere ein CSRF-Token
Beim Rendern des Formulars oder der Seite generierst du ein eindeutiges CSRF-Token und speicherst es in der Sitzung des Benutzers.

Code anklicken zum kopieren

<?php
session_start();
$csrfToken = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $csrfToken;
?>

Code anklicken zum kopieren


Füge das CSRF-Token dem Formular hinzu
Füge ein verstecktes Eingabefeld zum Formular hinzu und weise ihm den generierten CSRF-Token-Wert zu.

Code anklicken zum kopieren

<form method="post" action="verarbeitung.php">
<input type="hidden" name="csrf_token" value="<?php echo $csrfToken; ?>">
<!-- Weitere Formularelemente hier -->
<button type="submit">Absenden</button>
</form>

Code anklicken zum kopieren



Validiere das CSRF-Token beim Verarbeiten der Formulardaten
Beim Verarbeiten der Formulardaten auf der Serverseite überprüfst du, ob das übermittelte CSRF-Token mit dem in der Sitzung gespeicherten Token übereinstimmt.

Code anklicken zum kopieren

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Überprüfe das CSRF-Token
if (!empty($_POST['csrf_token']) && hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
// Das CSRF-Token ist gültig, verarbeite die Formulardaten
// ...
} else {
// Das CSRF-Token ist ungültig oder fehlt, handle den Fehler
// ...
}
}
?>

Code anklicken zum kopieren


Aktualisiere das CSRF-Token
Nach dem erfolgreichen Verarbeiten des Formulars generiere ein neues CSRF-Token und aktualisiere den in der Sitzung gespeicherten Wert. Dadurch wird sichergestellt, dass für jeden Formularabsenden ein neues CSRF-Token verwendet wird.

Code anklicken zum kopieren

<?php
session_start();
$csrfToken = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $csrfToken;
?>

Code anklicken zum kopieren


Indem du diese Schritte befolgst, fügst du CSRF-Schutz zu deiner PHP-Anwendung hinzu. Beim Absenden des Formulars wird das CSRF-Token überprüft, um sicherzustellen, dass die Anfrage von einem autorisierten Benutzer stammt und nicht von einer bösartigen Website.

Es ist wichtig zu beachten, dass dies eine grundlegende Implementierung ist und je nach Anwendungsfall und Framework weitere Anpassungen erforderlich sein können. Zum Beispiel könnten zusätzliche Maßnahmen wie das Hinzufügen eines Zeitstempels zum CSRF-Token oder das Überprüfen des Referrers hinzugefügt werden, um den Schutz weiter zu verbessern.


Zurück Weiter


Kommentare

Möchtest du etwas zu diesem Tutorial sagen?