Commit Graph
4 Commits
Author SHA1 Message Date
florian.wilde e3d8e70a38 feat(security): Sessions, Login, CSRF, Rate-Limiting und Setup-Token
Session-Login mit genau einem Admin-Konto, Passwort als bcrypt-Hash.
Sessions mit HttpOnly, SameSite=Lax, strict mode, ID-Wechsel beim Login,
Inaktivitaets- und absoluter Zeitgrenze; ueber HTTPS wird das Cookie
automatisch auf secure gesetzt. Ein Passwortwechsel entwertet
bestehende Sitzungen.

Das Rate-Limiting zaehlt Fehlversuche pro IP-Hash - die IP selbst wird
nie gespeichert.

SetupToken schliesst das Zeitfenster zwischen Upload und erstem Aufruf:
ohne das Einmal-Token aus dem Datenverzeichnis laesst sich kein Konto
anlegen.
2026-08-03 18:11:39 +02:00
florian.wilde 3ca6a03149 feat(http): Request, Response, Router und Template-Engine
Der Router kennt Platzhalter fuer ein Pfadsegment und liefert 405, wenn
nur die Methode nicht passt. Response kann Arbeit fuer die Zeit NACH dem
Ausliefern vormerken (afterSend) - so verzoegert das Protokollieren
eines Klicks die Weiterleitung nicht.

BasePath deckt drei Installationsarten ab: Webroot auf public/,
Unterverzeichnis und Shared Hosting ohne eigenen Webroot.
2026-08-03 18:11:39 +02:00
florian.wilde 2c9fbdec87 feat(core): Konfiguration, PDO-Datenbankschicht und Migrationen
SQLite als Standard (keine Einrichtung noetig, WAL aktiviert), optional
MySQL/MariaDB. Beide Treiber nutzen dieselben vorbereiteten Statements.

Die Migrationen laufen automatisch beim ersten Request; jede Migration
liefert das SQL je Treiber. Damit entfaellt ein manueller Schritt beim
Deployment ueber FTP.

data/ enthaelt eine eigene .htaccess als zweite Absicherung, falls das
Verzeichnis beim Hoster doch einmal im Webroot landet.
2026-08-03 18:11:38 +02:00
florian.wilde b41dd1d3d7 chore: Projektgeruest, Abhaengigkeiten und Werkzeuge
Plain PHP 8.2+ ohne Framework. Einzige Laufzeit-Abhaengigkeit ist
endroid/qr-code; intl und imagick sind optional (es gibt jeweils einen
Rueckfallweg). Konfiguration ueber .env oder Umgebungsvariablen, damit
dieselbe Anwendung per FTP und per Docker deploybar ist.
2026-08-03 18:11:38 +02:00