Sicherheit

Sicherheitsmodell und Befehlsvalidierung
  • Nie eine Shell. Befehle werden via proc_open mit einem argv-Array ausgeführt.
  • Befehls-Whitelist. Modulskripte müssen modules_v4/<module>/cli/<script>.php entsprechen, existieren und sich in einem modules_v4/<module>/cli/-Verzeichnis auflösen. Core-Befehle sind auf die Read-only/Export-Allowlist beschränkt.
  • Argument-Validierung. Jedes Argument-Token muss eine einfache Option oder ein Wert sein — keine Shell-Metazeichen, keine Leerzeichen in Tokens, max. 10 Tokens.
  • Arbeitsverzeichnisse. Modulskripte laufen vom webtrees-Root; Core-Befehle laufen von data/.
  • Keine sensiblen Daten in stdout. Der Tick gibt nur Zusammenfassungen aus; die vollständige Ausgabe bleibt in der Ausführungshistorie (admin-only).
  • UI-Aktionen sind alle als *Admin* benannt (nur Admin, CSRF-geschützt).
  • Notaus-Schalter: Modul deaktivieren — der Tick tut dann nichts.
  • Der Tick ist Single-Instance (flock), und der Kindprozess eines Jobs wird nach dem Timeout hart getötet (SIGKILL).
  • Bündelung von Ereigniswarteschlangen. Eine Flut identischer Ereignisse wird zusammengeführt zu einem Joblauf.
  • Webhook-Token nur im Header. Das Token wird ausschließlich im X-Cronjob-Token-Header gesendet.
Zuletzt geändert 08.11.2026: external links and wording (8ebc5db)