- Joomla Version
- 6
- PHP Version
- PHP 8.4.x
- Hoster
- Ionos
Hallo,
es gibt ein plugin mit dem namen system http headers.
chatgpt empfiehlt eine ziemliche veraenderung dieses plugins. ich kannte das bisher nicht. vielleicht will da mal jemand drueber gucken? hier der text. bisher habe ich nichts veraendert.
1m 16s nachgedacht
Ja, über die .htaccess wäre es möglich, aber bei Joomla 6 solltest du dafür besser die eingebaute Funktion „System – HTTP Headers“ verwenden. Joomla kann dabei automatisch Nonces beziehungsweise Hashes für interne Skripte erzeugen. Eine statische .htaccess kann keinen neuen Nonce pro Seitenaufruf generieren und erreicht deshalb nur schwer die von Lighthouse verlangte starke CSP.
Empfohlene Einrichtung in Joomla
1. HTTP-Headers-Plugin aktivieren
Im Joomla-Backend:
System → Verwalten → Plugins
Suche nach:
System – HTTP Headers
Das Plugin aktivieren und öffnen.
Achte darauf, dass dort nicht bereits manuell ein anderer Content-Security-Policy-Header eingetragen ist.
2. CSP-Konfiguration öffnen
Gehe anschließend zu:
System → Konfiguration → Content Security Policy
Je nach deutscher Übersetzung kann es auch Inhaltssicherheitsrichtlinie heißen.
Stelle zunächst Folgendes ein:
Einstellung Wert
Content Security Policy Aktiviert
Client Website / Site
Modus Erkennen / Detect
Nur berichten / Report-Only Aktiviert
Nonce Aktiviert
Skript-Hashes Aktiviert
Style-Hashes Aktiviert
frame-ancestors 'self' Aktiviert
Der Report-Only-Modus blockiert zunächst nichts. Er zeigt nur, welche Skripte, Schriftarten, Videos oder Erweiterungen später durch die CSP blockiert würden. Das ist wichtig, weil eine sofort aktivierte strenge CSP beispielsweise das Menü, das Kontaktformular, Cookie-Banner oder eingebettete Videos beschädigen kann.
3. Die Website testen
Öffne anschließend verschiedene Bereiche deiner Website:
Startseite
Kontaktformular
Suchfunktion
mobile Navigation
Seiten mit Videos
Seiten mit Karten oder externen Inhalten
Cookie-Banner
Danach findest du die Meldungen unter:
System → Verwalten → Content Security Policy
Dort zeigt Joomla die blockierten beziehungsweise erkannten Quellen an.
4. Wichtige Direktiven ergänzen
Im Modus Benutzerdefiniert / Custom solltest du mindestens diese Direktiven eintragen:
Direktive Wert
default-src 'self'
script-src 'self' 'strict-dynamic'
object-src 'none'
base-uri 'self'
form-action 'self'
frame-ancestors 'self'
img-src 'self' data: https:
style-src 'self' 'unsafe-inline'
font-src 'self' data: https:
connect-src 'self' https:
Bei YouTube-Videos müsste zusätzlich beispielsweise eine frame-src-Direktive hinzukommen:
'self' https://www.youtube.com https://www.youtube-nocookie.com
Chrome Lighthouse erwartet für den XSS-Test insbesondere eine wirksame script-src-Regel sowie object-src und base-uri. Nonces oder Hashes sind wesentlich stärker als eine reine Liste erlaubter Domains.
5. CSP wirklich aktivieren
Wenn deine Website im Report-Only-Modus vollständig funktioniert:
Modus auf Automatisch oder Benutzerdefiniert stellen.
Report-Only deaktivieren.
Cache von Joomla und Browser löschen.
Lighthouse erneut starten.
Erst dann wird der Header als
Content-Security-Policy
ausgeliefert. Solange dort
Content-Security-Policy-Report-Only
steht, meldet Lighthouse weiterhin:
No CSP found in enforcement mode
Nicht gleichzeitig .htaccess und Joomla verwenden
Lege die CSP entweder über Joomla oder über die .htaccess fest. Zwei CSP-Header werden nicht einfach überschrieben, sondern beide Richtlinien können gleichzeitig angewendet werden. Dadurch können unerwartet Skripte oder Inhalte blockiert werden. Joomla warnt ebenfalls vor doppelten Header-Einträgen.
Für deine Joomla-Seite ist deshalb diese Variante am sinnvollsten:
Joomla HTTP-Headers-Plugin + Nonce + zunächst Report-Only, danach Enforcement.
Achte darauf, dass dort nicht bereits manuell ein anderer Content-Security-Policy-Header eingetragen ist.
was heisst das? was soll drin stehen?
43s nachgedacht
da steht drin
1m 20s nachgedacht
Ja, das ist die richtige Stelle. Dort wird nicht der komplette CSP-Header eingetragen, sondern jede Regel einzeln.
Die vorhandene Zeile
default-src 'self'
bedeutet: Inhalte dürfen standardmäßig nur von deiner eigenen Domain alles-ueber-litauen.de geladen werden. Diese Zeile kannst du stehen lassen.
Einstellungen oben
Stelle zunächst Folgendes ein:
Einstellung Auswahl
Content Security Policy Aktiviert
Modus Benutzerdefiniert
Report-Only Aktiviert
Nonce Aktiviert
Script-Hashes Aktiviert
Style-Hashes Aktiviert
frame-ancestors 'self' Aktiviert
Bei Client zunächst immer Website/Site auswählen, nicht „Administrator“. Joomla kann Nonces und Hashes automatisch für Skripte und Styles erzeugen, die über die Joomla-API eingebunden werden.
Diese Regeln eintragen
Mit dem Pluszeichen jeweils eine neue Zeile hinzufügen:
Richtlinie Wert
default-src 'self'
script-src 'self' 'unsafe-inline' 'strict-dynamic' https:
style-src 'self' 'unsafe-inline' https:
img-src 'self' data: https:
font-src 'self' data: https:
connect-src 'self' https:
object-src 'none'
base-uri 'self'
form-action 'self'
frame-src 'self' https://www.youtube.com https://www.youtube-nocookie.com
Bei jeder Zeile als Client „Website/Site“ auswählen.
Wichtig: In das Feld „Wert“ kommt nur beispielsweise
'self' data: https:
also kein Semikolon und nicht noch einmal img-src.
script-src, object-src und base-uri sind für den Lighthouse-XSS-Test besonders wichtig. Chrome empfiehlt außerdem Nonces oder Hashes, da einfache Domain-Freigaben leichter umgangen werden können.
Anschließend testen
Speichern und danach prüfen:
Startseite
Menü auf dem Handy
Suchfunktion
Kontaktformular
Bildergalerien
eingebettete Videos
Falls etwas nicht funktioniert, zunächst Report-Only aktiviert lassen. In diesem Modus meldet der Browser Verstöße, blockiert aber noch nichts.
Wenn alles funktioniert:
Report-Only: Deaktiviert
Erst dann sendet Joomla den wirksamen Header
Content-Security-Policy
und nicht nur
Content-Security-Policy-Report-Only
Lighthouse erkennt eine CSP im Report-Only-Modus ausdrücklich nicht als aktive Schutzrichtlinie.
Die CSP solltest du danach nicht zusätzlich in die .htaccess schreiben, damit keine zwei unterschiedlichen Richtlinien gleichzeitig wirken.