Sicherheit: CSRF-Schutz für Kontaktformular #42

Closed
opened 2026-05-19 15:42:43 +02:00 by greggy · 1 comment
Owner

Schwachstelle #2 – CSRF-Schutz fehlt

Das Kontaktformular hat keinen CSRF-Token. Ein Angreifer könnte ein Formular auf einer fremden Seite platzieren, das automatisch Anfragen an deine Seite sendet.

Empfehlung

  • CSRF-Token in der Session generieren
  • Token als Hidden-Field im Formular einbinden
  • Beim Submit prüfen ob Token übereinstimmt

Umsetzung

// Token generieren
$_SESSION["csrf_token"] = bin2hex(random_bytes(32));

// Im Formular
<input type="hidden" name="csrf_token" value="<?= $_SESSION["csrf_token"] ?>">

// Beim Submit prüfen
if ($_POST["csrf_token"] !== $_SESSION["csrf_token"]) { /* reject */ }

Priorität

🟠 Mittel

## Schwachstelle #2 – CSRF-Schutz fehlt Das Kontaktformular hat **keinen CSRF-Token**. Ein Angreifer könnte ein Formular auf einer fremden Seite platzieren, das automatisch Anfragen an deine Seite sendet. ### Empfehlung - CSRF-Token in der Session generieren - Token als Hidden-Field im Formular einbinden - Beim Submit prüfen ob Token übereinstimmt ### Umsetzung ```php // Token generieren $_SESSION["csrf_token"] = bin2hex(random_bytes(32)); // Im Formular <input type="hidden" name="csrf_token" value="<?= $_SESSION["csrf_token"] ?>"> // Beim Submit prüfen if ($_POST["csrf_token"] !== $_SESSION["csrf_token"]) { /* reject */ } ``` ### Priorität 🟠 Mittel
greggy added the
KI
label 2026-05-19 15:42:43 +02:00
greggy added the
KI
label 2026-05-22 01:03:19 +02:00
Author
Owner

Phase 1: Analyse abgeschlossen

Komplexität: S (Small)

Spezifikation

CSRF-Token in HomeController implementieren:

  1. Token via bin2hex(random_bytes(32)) generieren und in Session speichern
  2. Hidden-Field csrf_token im Kontaktformular
  3. POST-Validierung mit hash_equals() (timing-safe)

Akzeptanzkriterien

  • CSRF-Token bei jedem GET generiert
  • Token als Hidden-Field im Formular
  • POST ohne gültiges Token wird abgelehnt
  • Formular funktioniert weiterhin korrekt

Status: ReadyForDev → Weiter zu Phase 2 (Implementierung)

## Phase 1: Analyse abgeschlossen ✅ **Komplexität: S (Small)** ### Spezifikation CSRF-Token in HomeController implementieren: 1. Token via `bin2hex(random_bytes(32))` generieren und in Session speichern 2. Hidden-Field `csrf_token` im Kontaktformular 3. POST-Validierung mit `hash_equals()` (timing-safe) ### Akzeptanzkriterien - [ ] CSRF-Token bei jedem GET generiert - [ ] Token als Hidden-Field im Formular - [ ] POST ohne gültiges Token wird abgelehnt - [ ] Formular funktioniert weiterhin korrekt **Status: ReadyForDev** → Weiter zu Phase 2 (Implementierung)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: greggy/landingpage-haus-schleusingen#42
No description provided.