CSP im erzwungenen Modus, wie mache ich das?

  • Hallo zusammen,

    Pagespeed Insights bescheinigt mir Abzüge bzgl. Best Practises, da CSP nicht im erzwungenen Modus läuft.

    Kann mir jemand sagen, wie das geht? Soweit ich das bisher meinte verstanden zu haben, sollte das in Joomla 5 eingebaut sein, oder doch nicht?

    Mit Dank im Voraus,

    Dirk

  • Es gibt das Plugin "System - HTTP Header". Dieses kannst du nutzen, um auch die Content Security Policy einzustellen, also die CSP an deine Seite anzupassen. Du kannst CSP zunächst über "Report only" analysieren , bevor du sie "scharf schaltest". Lese dich zu dem Thema aber unbedingt vorher ein! Ist nicht ganz so trivial, wie es auf Anhieb ausschaut.
    Nebenbei: Es könnte auch passieren, dass du das Backend aufgrund blockierter für die Optik/Struktur notwendiger Dateien nicht mehr vernünftig bedienen kannst. Ist mir selber schon des Öfteren passiert. Über die DB kann man die Plugin-Einstellungen aber glücklicherweise wieder ändern. ;) Also keine Panik, wenn das passieren sollte.

    Wie das mit dem "erzwungenen Modus" gemeint ist, kann ich leider nicht beantworten. Nutzt du das Plugin denn schon?

  • Es gibt das Plugin "System - HTTP Header". Dieses kannst du nutzen, um auch die Content Security Policy einzustellen, also die CSP an deine Seite anzupassen. Du kannst CSP zunächst über "Report only" analysieren , bevor du sie "scharf schaltest". Lese dich zu dem Thema aber unbedingt vorher ein! Ist nicht ganz so trivial, wie es auf Anhieb ausschaut.
    Nebenbei: Es könnte auch passieren, dass du das Backend aufgrund blockierter für die Optik/Struktur notwendiger Dateien nicht mehr vernünftig bedienen kannst. Ist mir selber schon des Öfteren passiert. Über die DB kann man die Plugin-Einstellungen aber glücklicherweise wieder ändern. ;) Also keine Panik, wenn das passieren sollte.

    Wie das mit dem "erzwungenen Modus" gemeint ist, kann ich leider nicht beantworten. Nutzt du das Plugin denn schon?

    Vielen Dank! Das Plugin ist wohl standardmäßig aktiviert, CSP aber nicht. Es scheint mir wirklich etwas für Profis zu sein, soviel Bahnhof verstehe ich zumindest erstmal. "nonce" und "strict-dynamic" würden es also ermöglichen, auch js von Drittanbietern, sagen wir Maps oder Kontaktformular, laufen zu lassen. Muss das alles, auch der nonce-Generator in die head-section meiner Templates? Ein default-Script für einfache Joomla-Anwender gibt es also eher wohl nicht?:rolleyes:

  • Vielen Dank für all die Tips!

    Ich habe festgestellt, dass 2 Scripte nicht von meiner Seite stammen, das sind mein IONOS-Newsletter und Google-Maps. Kann mir jemand sagen, in welchem Format ich diese Script-Quellen im HTTP-Header-Plugin unter CSP (script-src=?) eingeben sollte? Meine Vorstellung ist, dass ich gleichzeitig unter default-src 'self' und 'inline-unsafe' angeben muss, damit z.B. die Scripte des Templates laufen. Liege ich da richtig?

    Mit Dank im Voraus und Grüße,

    Dirk

  • Ich habe festgestellt, dass 2 Scripte nicht von meiner Seite stammen, das sind mein IONOS-Newsletter und Google-Maps. Kann mir jemand sagen, in welchem Format ich diese Script-Quellen im HTTP-Header-Plugin unter CSP (script-src=?) eingeben sollte?

    Was Google Maps betrifft, habe ich auf die Schnelle das hier gefunden:

    Google Maps with a Content-Security-Policy

    Grundsätzlich kannst du "report-only" nutzen. Dann erhältst du Emails mit entsprechenden Informationen, wenn etwas blockiert wird.

    .... und 'inline-unsafe' angeben muss, damit z.B. die Scripte des Templates laufen. Liege ich da richtig?

    "unsafe-inline" ist auf jeden Fall zu vermeiden. Was haben Google Maps und der Newsletter denn mit den Skripten des Templates zu tun?
    Hast du weitere Probleme? Wenn ja, von welchem Template und welchen Skripten sprichst du?

  • Was Google Maps betrifft, habe ich auf die Schnelle das hier gefunden:

    https://content-security-policy.com/examples/google-maps/

    Danke, das scheint zu funktionieren!

    Wenn ich inline-unsafe nicht angebe, funktioniert mein Background-Slider (JUX) nicht. Wie finde ich heraus, was ich da angeben muss?

    Mein Template ist Gantry 5. Das scheint ein paar Scripte zu beinhalten.

    An Add-On Scripten laufen - neben dem Newsletter von IONOS - sonst noch Creative Contact Form (von Creative Solutions), jSpeed und Event Booking (joomdonation).

  • Wie gesagt, ich nutze dafür "report-only". Einrichten und warten, was da per Email so alles an Infos reinkommt; was also so alles blockiert werden würde, wenn man CSP in der aktuellen Einstellung so nutzen würde.

    ok, habe ich gemacht. Entsprechend der aktuellen Einstellung dürfte zumindest der Background-Slider nicht funktionieren. Wie lange mag es dauern, bis Nachrichten darüber eintrudeln?

  • ok, habe ich gemacht.

    Wie genau hast du es denn gemacht? Nur "report-only" aktivieren reicht dafür nicht aus, das sorgt nur für die Nachrichten in der Browserconsole. Wenn man die Einträge per eMail habe möchte. Müsste man auch die Direktive "report-uri" erstellen und auf einen CSP reporter verweisen. Z.B. diesen: GitHub - zero-24/csp-reporter-php: This is a smal csp-reporter script in php that send mails to a spezific mail adress in case of csp violations

  • Wie genau hast du es denn gemacht? Nur "report-only" aktivieren reicht dafür nicht aus, das sorgt nur für die Nachrichten in der Browserconsole. Wenn man die Einträge per eMail habe möchte. Müsste man auch die Direktive "report-uri" erstellen und auf einen CSP reporter verweisen. Z.B. diesen: GitHub - zero-24/csp-reporter-php: This is a smal csp-reporter script in php that send mails to a spezific mail adress in case of csp violations

    Danke! Ich habe dann also eine report-uri mit dem Namen /csp-hotline.php erstellt und das entsprechende php-Script mit meiner email-Adresse ins root-Verzeichnis meiner Seite geladen. Es geschieht jedoch nichts. Die Anleitung ist auch schon etwas in die Jahre gekommen (2013), hat es damit was zu tun?

  • Hi,

    die Anleitung sollte auch aktuell noch funktionieren. Hast du denn CSP Meldungen im Browser und bist du sicher das dein hoster mail() nicht blockiert? Hast du einen Link für mich dann schaue ich mir den CSP gerne später einmal an.

  • Damit du es mal selbst siehst und später noch nachschauen kannst wie es ursprünglich derzeit war habe ich dir nachfolgend die derzeitigen kompletten Antwort-Kopfzeilen(header) von html-Dokument: https://tantra-lebensart.de/ in den nachfolgenden Spoiler gepackt:

    Spoiler anzeigen
  • Damit du es mal selbst siehst und später noch nachschauen kannst wie es ursprünglich derzeit war habe ich dir nachfolgend die derzeitigen kompletten Antwort-Kopfzeilen(header) von html-Dokument: https://tantra-lebensart.de/ in den nachfolgenden Spoiler gepackt:

    Vielen Dank! Ich versuche, da mit den Firefox-Browsertools weiter zu kommen. Nachdem ich die o.g. Angaben als Scriptliste unter script-src angegeben habe, erhalte ich dieses unerfreuliche Ergebnis. Das sagt mir nun so gar nichts. Was mache ich falsch?

  • Ist meine Frage eigentlich zu banal, als dass jemand hier auf die Idee käme, darauf einzugehen? Ich meine es tatsächlich so. Offensichtlich stimmt irgendwas an meinem Eingabeformat nicht, oder/und ich weiß nicht, wie die Fehlermeldungen sinnstiftend zu einer wirksamen CSP beitragen könnten. Wäre jemand so lieb, da weiter zu helfen? Mein php-Script kommt mit der allgemeinen Fehlermeldung 500.

    Viele Grüße,

    Dirk

  • Ist meine Frage eigentlich zu banal, als dass jemand hier auf die Idee käme, darauf einzugehen?

    Ich glaube nicht, dass das Thema zu banal ist. Mir kommt es eher so vor, dass die meisten Webmaster um das Thema vorsichtshalber einen großen Bogen machen, weil es ihnen zu kompliziert ist. Zu diesen Webmastern zähle ich mich auch, obwohl ich weiß, dass eine gute CSP-Einstellung sehr viel zu einer sicheren Website beitragen kann.

    Vielleicht hilft Dir dieser (ausführliche) Artikel: https://www.jug-zueri.ch/artikel/das-ht…gin-in-joomla-4

    Freundliche Grüße aus Wächtersbach, Rolf Dautrich