Files
0012/todo/12-monitor-php-token-check.md
Frank Schwenk 2440fbf974 fix: spam-friendly mail headers; docs: monitor.php token todo
Use MTA-style Message-ID and display names on From/To to avoid
SpamAssassin MSGID_RANDY and PDS_NAKED_TO_NUMERO. Add todo/12 for
HTTP token gate on monitor.php (CLI cron unchanged).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 10:48:37 +02:00

1.9 KiB
Raw Permalink Blame History

12 — monitor.php: Token-Check (HTTP)

Priorität: medium
Abhängigkeiten: 03 (monitor.php), 05 (Plesk-Cron)
Referenz: ../public/monitor.php, ../public/mail-test.php

Problem

monitor.php ist per GET öffentlich erreichbar (https://0012.de/monitor.php). Im Plesk-Access-Log tauchen neben dem Cron-curl auch fremde Clients auf (z. B. got von AWS-IPs) — jeder kann Checks auslösen, JSON/Status lesen und Last erzeugen.

Plesk-Cron kann das Skript per CLI ausführen (php monitor.php) — dort ist kein HTTP nötig.

Ziel

HTTP-Aufrufe nur mit gültigem Token; CLI/Cron unverändert.

Checkliste

  • In monitor.php (oder monitor-lib.php): bei Web-SAPI (php_sapi_name() !== 'cli') Token prüfen
    • Query-Parameter token oder Header X-Monitor-Token
    • Secret: bestehendes MONITOR_INGEST_TOKEN (wie mail-test.php) oder separates MONITOR_RUN_TOKEN
    • Vergleich mit hash_equals()
    • Bei Fehler: 403 + kurzer JSON/Text, kein Monitoring-Lauf
  • Plesk-Cron auf PHP-Skript (CLI) umstellen, falls aktuell URL/Curl — siehe 05-plesk-cron.md
  • Optional: .htaccess / Plesk „Verzeichnis schützen“ nur als Zusatz, nicht als einzige Absicherung
  • Deploy + manueller Test:
    • GET /monitor.php ohne Token → 403
    • GET /monitor.php?token=… → Lauf OK
    • php monitor.php lokal/auf Server → Lauf OK
  • Kurz in ../MONITORING.md oder 05-plesk-cron.md dokumentieren

Nicht im Scope

  • Rate-Limit / IP-Whitelist (optional später)
  • Absicherung von index.php (öffentliche Statusseite bleibt bewusst offen)

Akzeptanzkriterien

  • Fremde GET-Requests ohne Token lösen keinen Monitor-Lauf aus
  • Geplanter Plesk-Cron (CLI) läuft weiter zuverlässig

Referenz-Implementierung

Vorbild Token-Check: ../public/mail-test.php (Zeilen 15–22).