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
<inputtype="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
Token via bin2hex(random_bytes(32)) generieren und in Session speichern
Hidden-Field csrf_token im Kontaktformular
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)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
Umsetzung
Priorität
🟠 Mittel
Phase 1: Analyse abgeschlossen ✅
Komplexität: S (Small)
Spezifikation
CSRF-Token in HomeController implementieren:
bin2hex(random_bytes(32))generieren und in Session speicherncsrf_tokenim Kontaktformularhash_equals()(timing-safe)Akzeptanzkriterien
Status: ReadyForDev → Weiter zu Phase 2 (Implementierung)