presseportale/config/trustedproxy.php
Kevin Adametz 3def447f51 security: Proxy-Vertrauen nur noch lokal, HSTS in Produktion, Tests ohne echte ntfy-Pushes
Live-Prüfung 08.10.2026: nginx beantwortet die Anfragen direkt (kein CDN,
kein vorgeschalteter Proxy), die App vertraute aber jedem Proxy
(trustProxies at '*'). Jeder Client konnte per X-Forwarded-For seine IP
vorgeben und damit IP-Limits bei Login und Passwort-Reset umgehen sowie
IP-Protokolle fälschen. Jetzt steuert config/trustedproxy.php das Vertrauen:
lokal (Traefik) weiterhin '*', sonst keinem Proxy; ein späteres CDN kommt
über TRUSTED_PROXIES dazu.

HSTS fehlte auf Live. SecurityHeaders setzt Strict-Transport-Security auf
HTTPS-Antworten, standardmäßig nur in Produktion (max-age 1 Jahr, bewusst
ohne includeSubDomains/preload).

phpunit.xml leert MONITORING_NTFY_*, damit Testläufe keine echten
Push-Nachrichten mehr auslösen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 11:41:24 +00:00

22 lines
849 B
PHP

<?php
return [
/*
|--------------------------------------------------------------------------
| Vertrauenswürdige Proxies
|--------------------------------------------------------------------------
|
| Nur Anfragen von diesen Adressen dürfen per X-Forwarded-* die Client-IP,
| das Protokoll und den Host vorgeben. Lokal läuft die App hinter Traefik
| (`*` = der aufrufende Container). Auf Live beantwortet nginx die
| Anfragen direkt — dort bleibt die Liste leer, sonst könnte jeder Client
| seine IP fälschen und IP-Limits beim Login oder Passwort-Reset umgehen.
| Kommt einmal ein Proxy oder CDN davor: dessen Adressbereiche als
| kommagetrennte Liste in TRUSTED_PROXIES eintragen.
|
*/
'proxies' => env('TRUSTED_PROXIES', env('APP_ENV') === 'local' ? '*' : null) ?: null,
];