2440fbf974
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>
45 lines
1.9 KiB
Markdown
45 lines
1.9 KiB
Markdown
# 12 — monitor.php: Token-Check (HTTP)
|
||
|
||
**Priorität:** medium
|
||
**Abhängigkeiten:** 03 (monitor.php), 05 (Plesk-Cron)
|
||
**Referenz:** [`../public/monitor.php`](../public/monitor.php), [`../public/mail-test.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`](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`](../MONITORING.md) oder [`05-plesk-cron.md`](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`](../public/mail-test.php) (Zeilen 15–22).
|