Schweregrad: Mittel (Produktions-Härtung)
Mehrere Härtungsdefizite in der Konfiguration, sinnvoll gemeinsam zu beheben.
1. Fehlende HTTP-Sicherheitsheader
Es gibt keinen kernel.response-Listener, der Security-Header setzt (die vorhandenen Subscriber KernelEventSubscriber/SitemapEventSubscriber setzen nur Canonical-URL bzw. Sitemap). Es fehlen: Content-Security-Policy, Strict-Transport-Security (HSTS), X-Frame-Options (Clickjacking-Schutz), X-Content-Type-Options: nosniff.
→ Empfehlung: nelmio/security-bundle oder einen ResponseEvent-Subscriber ergänzen. Eine CSP ist zugleich zweite Verteidigungslinie für die |raw-Ausgaben in Twig.
2. Committetes APP_SECRET in versionierter .env
.env:7 enthält APP_SECRET=90f2d22c92712fa1cc32be3a26f4e599 und ist git-getrackt. APP_SECRET signiert u. a. CSRF-Tokens, remember_me-Cookies und URIs. Wird der Wert in Produktion nicht überschrieben, ist er öffentlich bekannt.
→ Empfehlung: APP_SECRET rotieren, in Produktion ausschließlich über Umgebungsvariable/Symfony-Secrets-Vault setzen, in der getrackten .env nur Platzhalter belassen.
(Die echt aussehenden LOGGLY_TOKEN/OPENWEATHERMAP_APPID-Werte liegen nur in der nicht getrackten .env.local — in der getrackten .env stehen dort Platzhalter invalid/asdf.)
3. APP_ENV=dev als Default in versionierter .env
.env:6 setzt APP_ENV=dev. In Kombination mit dem Profiler-Issue führt ein Deployment, das APP_ENV=prod zu setzen vergisst, zum Debug-/Profiler-Modus mit voller Stacktrace-/Konfig-Offenlegung.
→ Empfehlung: sicherstellen, dass Produktion APP_ENV=prod/APP_DEBUG=0 erzwingt; ggf. den getrackten Default auf prod setzen und lokale Entwicklung über .env.local steuern.
4. CSRF-Schutz global deaktiviert
config/packages/framework.yaml:4 — #csrf_protection: true ist auskommentiert. Aktuell geringe Angriffsfläche (kaum klassische Formulare), aber relevant, sobald authentifizierte Formulare/Sessions hinzukommen.
→ Empfehlung: csrf_protection: true aktivieren.
5. .env.test mit Klartext-Default ADMIN_PASSWORD=123
.env.test (getrackt) enthält schwache Default-Credentials. Auch wenn nur Test-Env: kein reales Passwort in getrackte .env*-Dateien.
Erstellt im Rahmen eines automatisierten Sicherheits-/Qualitäts-Reviews. Bitte vor Umsetzung gegenprüfen.
Schweregrad: Mittel (Produktions-Härtung)
Mehrere Härtungsdefizite in der Konfiguration, sinnvoll gemeinsam zu beheben.
1. Fehlende HTTP-Sicherheitsheader
Es gibt keinen
kernel.response-Listener, der Security-Header setzt (die vorhandenen SubscriberKernelEventSubscriber/SitemapEventSubscribersetzen nur Canonical-URL bzw. Sitemap). Es fehlen:Content-Security-Policy,Strict-Transport-Security(HSTS),X-Frame-Options(Clickjacking-Schutz),X-Content-Type-Options: nosniff.→ Empfehlung:
nelmio/security-bundleoder einenResponseEvent-Subscriber ergänzen. Eine CSP ist zugleich zweite Verteidigungslinie für die|raw-Ausgaben in Twig.2. Committetes
APP_SECRETin versionierter.env.env:7enthältAPP_SECRET=90f2d22c92712fa1cc32be3a26f4e599und ist git-getrackt.APP_SECRETsigniert u. a. CSRF-Tokens,remember_me-Cookies und URIs. Wird der Wert in Produktion nicht überschrieben, ist er öffentlich bekannt.→ Empfehlung:
APP_SECRETrotieren, in Produktion ausschließlich über Umgebungsvariable/Symfony-Secrets-Vault setzen, in der getrackten.envnur Platzhalter belassen.(Die echt aussehenden
LOGGLY_TOKEN/OPENWEATHERMAP_APPID-Werte liegen nur in der nicht getrackten.env.local— in der getrackten.envstehen dort Platzhalterinvalid/asdf.)3.
APP_ENV=devals Default in versionierter.env.env:6setztAPP_ENV=dev. In Kombination mit dem Profiler-Issue führt ein Deployment, dasAPP_ENV=prodzu setzen vergisst, zum Debug-/Profiler-Modus mit voller Stacktrace-/Konfig-Offenlegung.→ Empfehlung: sicherstellen, dass Produktion
APP_ENV=prod/APP_DEBUG=0erzwingt; ggf. den getrackten Default aufprodsetzen und lokale Entwicklung über.env.localsteuern.4. CSRF-Schutz global deaktiviert
config/packages/framework.yaml:4—#csrf_protection: trueist auskommentiert. Aktuell geringe Angriffsfläche (kaum klassische Formulare), aber relevant, sobald authentifizierte Formulare/Sessions hinzukommen.→ Empfehlung:
csrf_protection: trueaktivieren.5.
.env.testmit Klartext-DefaultADMIN_PASSWORD=123.env.test(getrackt) enthält schwache Default-Credentials. Auch wenn nur Test-Env: kein reales Passwort in getrackte.env*-Dateien.Erstellt im Rahmen eines automatisierten Sicherheits-/Qualitäts-Reviews. Bitte vor Umsetzung gegenprüfen.