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>
22 lines
849 B
PHP
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,
|
|
|
|
];
|