3 Commits
Author SHA1 Message Date
adminandClaude Opus 5 6306bfba17 Login und Passkeys auf Prepared Statements umgebaut
- sites/start.php: ein Query statt zwei, Passwortvergleich per hash_equals
  in PHP statt im SQL, Updates per id. Die Eingaben gehen nicht mehr durch
  htmlspecialchars(): Passwoerter werden beim Anlegen roh gehasht, mit
  & < > " ' konnte man sich deshalb bisher nie anmelden.
- getUserSetting/updateUserSetting mit Platzhaltern; behoben: INSERT-Zweig
  rief mysqli_real_escape_string ohne Verbindung auf (Fatal Error),
  $mysqli_error als Variable, ungewolltes echo "update". Aufrufer escapen
  nicht mehr vor (sonst doppelt), settings.php: Tippfehler
  mysqi_real_escape_string beim Speichern von show_sks behoben, style nur
  als Dateiname ohne Pfad.
- authServer.php, addKey.php, userkeys.php, checkAdduser(): Platzhalter.
  Passkey-INSERT setzt lastAuth/authKey (Pflichtfelder im strikten Modus).
  addKey nur als reine Ziffern, sonst passte "12345678xyz" per Typumwandlung.
- checkLogin() entfernt: nirgends aufgerufen, fragte die nicht existierende
  Tabelle users ab.
- userkeys.tpl: Passkey-Name escaped.

Getestet gegen die migrierte Testdatenbank im strikten Modus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 10:24:17 +02:00
adminandClaude Opus 5 a6758ae63b Sicherheit: Passkey-Registrierung nur mit Freigabe durch Superadmin
authServer.php nahm getCreateArgs/processCreate ohne jede Pruefung an und
uebernahm die Benutzer-id aus der URL. Jeder konnte damit aus dem Internet
einen Passkey fuer ein beliebiges Konto (auch Superadmin) registrieren und
sich anschliessend anmelden.

- sites/userkeys.php loest den addKey ein und legt eine Freigabe in der
  Session ab (5 Minuten, ein Benutzer, einmalig); der addKey wird geloescht
- authServer.php verlangt fuer getCreateArgs/processCreate Login,
  Superadmin-Recht und diese Freigabe; die Benutzer-id kommt aus der
  Freigabe, nicht aus der URL
- queryFidoMetaDataService nur fuer Superadmins
- Passkey-Login verweigert gesperrte Benutzer und meldet keinen Erfolg
  mehr, wenn der Benutzer fehlt
- addKey.php verlangt wie userkeys.php das Superadmin-Recht
- session_regenerate_id() nach Passwort- und Passkey-Login
- userkeys.php/addKey.php: $_GET["id"] als int statt ungequotet in SQL

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 10:09:54 +02:00
adminandClaude Opus 5 e2124220e5 Initialer Commit: Kundenverwaltung (PHP/Smarty)
Bestehende Codebasis als Ausgangsstand aufgenommen.

- .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache
  (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen;
  Verzeichnisstruktur ueber .gitkeep erhalten
- .gitattributes: Zeilenenden normalisiert (LF im Repo),
  Binaerformate markiert
- db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der
  Anwendung aus der externen Konfiguration statt hartkodiert aus der
  Datei; Passwort wird ueber eine temporaere Optionsdatei statt per
  Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet,
  Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 16:41:18 +02:00