CSRF

Der Begriff CSRF (englisch Cross-Site Request Forgery) bezeichnet eine der häufigsten und gefährlichsten Sicherheitslücken in Webanwendungen. Sie tritt auf, wenn Angreifer einen Benutzer dazu bringen, unbeabsichtigt Aktionen auf einer Webseite auszuführen, auf der er bereits eingeloggt ist – zum Beispiel das Ändern eines Passworts oder das Absenden eines Formulars.


Was ist CSRF

CSRF-Angriffe zielen auf Sitzungen mit gültiger Authentifizierung ab. Wenn ein Benutzer beispielsweise bei einer Bankseite eingeloggt ist, kann ein Angreifer ihn über einen präparierten Link oder ein verstecktes Formular auf einer anderen Seite dazu bringen, eine Überweisung auszuführen – ohne dass der Benutzer es merkt.
Das Problem: Die Anfrage enthält automatisch gültige Cookies oder Session-Daten, die der Browser mitsendet.


Beispiel eines CSRF-Angriffs

<!-- Gefährliche Beispielseite -->
<img src="https://beispielbank.de/ueberweisung?betrag=1000&ziel=AngreiferKonto" />

Wenn der Nutzer bei seiner Bank angemeldet ist, würde der Browser diese Anfrage mitsenden und damit möglicherweise eine echte Transaktion auslösen.


Schutz vor CSRF

Maßnahme Beschreibung
CSRF-Token Ein eindeutiger, zufälliger Token wird jedem Formular oder jeder Anfrage hinzugefügt. Der Server prüft, ob der Token gültig ist.
SameSite-Cookies Cookies werden so konfiguriert, dass sie nicht bei Cross-Site-Requests gesendet werden. (SameSite=Lax oder Strict)
Überprüfung des Origin-Headers Der Server prüft, ob die Anfrage von der eigenen Domain stammt.
Doppelte Cookie-Strategie Der Token wird in einem Cookie und gleichzeitig im Formular übertragen, um Manipulationen zu erkennen.
Nur POST/PUT/DELETE für kritische Aktionen Verhindert, dass einfache GET-Anfragen sicherheitsrelevante Änderungen auslösen.

Unterschied zu anderen Angriffen

Angriffstyp Ziel Beispiel
CSRF Manipulation durch authentifizierten Benutzer Formular wird unbewusst abgeschickt
XSS (Cross-Site Scripting) Einschleusen von Skripten in Webseiten <script>-Code wird ausgeführt
Clickjacking Benutzer wird zum Klick auf versteckte Elemente verleitet Transparenter iFrame über Button

Beispiel für einen sicheren CSRF-Schutz in PHP

php

session_start();

if ($_SERVER[‚REQUEST_METHOD‘] === ‚POST‘) {
if (!hash_equals($_SESSION[‚csrf_token‘], $_POST[‚csrf_token‘])) {
die(‚Ungültiger Sicherheits-Token‘);
}
}

// Token generieren
if (empty($_SESSION[‚csrf_token‘])) {
$_SESSION[‚csrf_token‘] = bin2hex(random_bytes(32));
}
?>
<form method=“post“>
<input type=“hidden“ name=“csrf_token“ value=“<?=$_SESSION[‚csrf_token‘]?>“>
<button type=“submit“>Speichern</button>
</form>

 

Fazit

CSRF gehört zu den „Top 10 Web Security Risks“ laut OWASP. Jede Anwendung, die Benutzersitzungen oder Authentifizierung nutzt, sollte entsprechende Schutzmechanismen implementieren.
Die Kombination aus CSRF-Token, SameSite-Cookies und einer sauberen Trennung der HTTP-Methoden ist der wirksamste Ansatz.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert