CSRF - erste Erichtigung

This commit is contained in:
2026-07-12 08:55:56 +02:00
parent 174fff6f31
commit 444f0a269b
6 changed files with 75 additions and 32 deletions
+30 -6
View File
@@ -35,6 +35,23 @@ Legacy-Verhalten oder das bestehende Design zu veraendern.
werden spaeter einzeln umgestellt, damit keine Formulare oder Spezialflows
brechen.
### CSRF-Rollout
Erste Legacy-POST-Seiten sind opt-in abgesichert:
- `hinweise.php`: Hinweis anlegen und Hinweis loeschen. Der bisherige
GET-Loeschlink wurde durch ein POST-Formular mit CSRF-Token ersetzt.
- `mitarbeiterverwalten.php`: Mitglied anlegen, Bearbeitungsformular oeffnen,
Mitglied speichern, aktivieren und deaktivieren.
- `namenanpassen.php`: Anzeigenamen aktualisieren.
Noch offen:
- Buchungsflows: `index.php`, `stricheintragen.php`, `einzahlung.php`.
- Korrektur-/Loeschflows: `letzteneintraege.php`.
- Uploads: `csvupload.php`.
- Spezialprozesse: `mailversenden.php`, `jahresauswertung.php`.
### Migrationen
- `database/migrations/0001_legacy_mysql_baseline.sql` bildet die bisherige
@@ -82,21 +99,28 @@ Die Skripte erwarten die bekannten Dev-Umgebungsvariablen `DB_HOST`, `DB_NAME`,
- PHP-Syntax fuer Bootstrap, Migrationen, Init-Skript und Config ist sauber.
- Session-Start laeuft in der lokalen Dev-Umgebung ohne PHP-Warnings ueber
`var/sessions`.
- CSRF negative Tests: `hinweise.php`, `mitarbeiterverwalten.php` und
`namenanpassen.php` liefern bei POST ohne Token HTTP 419.
- CSRF positive Tests: gueltige Token funktionieren fuer Hinweis-Anlage,
Mitglieder-Bearbeitungsformular und Namensanpassung. Der temporaere
Testhinweis wurde wieder entfernt.
- Golden Master weiterhin gruen mit 104 Assertions.
- HTTP-Smoke weiterhin gruen mit 14 sicheren Seiten.
## Bewusste Grenzen
- Keine Tenant-/User-/Rollen-Tabellen in M2. Diese gehoeren zu M3.
- Keine globale CSRF-Erzwingung in M2. Die Absicherung der POST-Seiten erfolgt
schrittweise.
- Keine globale CSRF-Erzwingung in M2. Die Absicherung weiterer POST-Seiten
erfolgt schrittweise.
- Kein Layout-Umbau in M2. Die visuelle Struktur bleibt stabil.
- PDF-/Mail-/Jahresprozesse bleiben als M6-Themen offen.
## Naechste Schritte
1. POST-Seiten einzeln mit `app_csrf_field()` und `app_require_csrf()`
absichern.
2. Eine duenne View-/Layout-Struktur vorbereiten, ohne Header/Footer-Markup
1. Buchungs- und Korrektur-POST-Seiten einzeln mit `app_csrf_field()` und
`app_require_csrf()` absichern.
2. CSV-Upload gesondert absichern und spaeter Uploads ausserhalb des Webroots
verlegen.
3. Eine duenne View-/Layout-Struktur vorbereiten, ohne Header/Footer-Markup
sofort zu verschieben.
3. Danach M3 starten: Tenants, User, Registrierung, Login und Rollen.
4. Danach M3 starten: Tenants, User, Registrierung, Login und Rollen.