CSRF

CSRF (Cross-Site Request Forgery) ist eine Web-Sicherheitslücke, bei der ein Benutzer ungewollte Aktionen auf einer Website ausführt, bei der er angemeldet ist.

Cross-Site Request Forgery (CSRF) ist eine Art von Web-Sicherheitslücke, die einen Benutzer dazu bringt, unbeabsichtigt Aktionen auf einer Website auszuführen, bei der er angemeldet ist. Angreifer nutzen das Vertrauen aus, das eine Website in den Browser des Benutzers hat, indem sie unautorisierte Anfragen im Namen des Benutzers stellen.

Funktionsweise von CSRF

  1. Das Opfer meldet sich bei einer vertrauenswürdigen Website (z. B. Bankseite) an und erhält ein Session-Cookie.
  2. Ohne sich abzumelden, besucht das Opfer eine bösartige Website.
  3. Diese löst im Hintergrund eine Anfrage (Formular, Bild, Script) an die vertrauenswürdige Seite aus.
  4. Da der Browser automatisch Cookies mitsendet, wirkt die Anfrage für den Server legitim.

Beispiel für einen CSRF-Angriff

<!-- Code auf der bösartigen Seite -->
<img src="https://bank.com/transfer?amount=1000&to=attacker" style="display:none">

Der Browser des Opfers sendet eine Anfrage an die Bank, inklusive gültigem Session-Cookie. Der Server nimmt an, dass die Anfrage beabsichtigt war.

Schutzmaßnahmen gegen CSRF

  • CSRF-Tokens: Einmalige, unvorhersehbare Tokens in Formularen, die beim Absenden geprüft werden.
  • SameSite-Cookies: Verhindern, dass Cookies bei Cross-Site-Anfragen gesendet werden.
  • Double-Submit-Cookies: Token wird sowohl im Cookie als auch in der Anfrage gespeichert und verglichen.
  • Re-Authentifizierung: Für besonders sensible Aktionen (z. B. Passwortänderung oder Überweisungen).

CSRF in PHP-Frameworks

  • Laravel: Bietet automatisch CSRF-Schutz über ein verstecktes _token-Feld.
  • Symfony: Nutzt CSRF-Tokens in Formularen und API-Requests.
  • WordPress: Nutzt Nonces (wp_nonce) zur Absicherung von Anfragen.

Unterschied zwischen CSRF und XSS

  • CSRF: Nutzt das Vertrauen einer Website in den Browser des Benutzers aus.
  • XSS: Nutzt das Vertrauen eines Benutzers in eine Website aus.

Zusammenfassung

CSRF ist eine schwerwiegende Web-Sicherheitslücke, die zu unautorisierten Aktionen wie Überweisungen, E-Mail-Änderungen oder Kontoübernahmen führen kann. Mit CSRF-Tokens, SameSite-Cookies und Framework-Sicherheitsfunktionen können Entwickler CSRF-Angriffe effektiv verhindern.