.htaccess oder Plugin System - HttpHeader

  • Hallo,

    Unter Joomla 3 sicherte ich meine Homepage über die .htaccess ab. Nachdem ich Joomla 4 installiert habe, fand ich diese Anleitung.

    Folgende Anweisungen verwendete ich in Joomla 3 in der .htaccess:

    Code
    Header set Content-Security-Policy "default-src 'none'; frame-ancestors 'self'; base-uri 'self'; form-action 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; font-src 'self'; img-src 'self'; media-src 'self'; block-all-mixed-content; connect-src 'self';"

    Das funktionierte mit Einschränkungen recht gut. Bei Arbeiten im Backend musste ich diese Regeln temporär außer Kraft setzen.

    Nun, unter Joomla 4 verwende ich das Plugin System - HttpHeader. Ich habe nun das Problem, dass allein das Vorhandensein der Anweisung "default-src 'none'", mein Template verschwinden lässt. Setze ich "default-src 'self'" werden immer noch Teile des Templates nicht gezeigt. Was mache ich falsch? :( Oder vielleicht besser, was kann ich tun.

    Ich erinnere mich, irgendwann mal gelesen zu haben, dass Joomla 4 besser mit den CSP umgehen können soll.

    Hat jemand einen Tipp?

    Gruß

  • Setzt man nicht typischerweise default-src auf 'self'? Die anderen Direktiven natürlich auch.

    Dann untersuchen lassen, was noch geblockt wird, z.B.mittels report (Email). Dann je nach Bedarf Ausnahmen reinschreiben.

    Im Backend kann da noch einiges dazu kommen, beispielsweise von AkeebaBackup (lässt sich aber in Akeeba deaktivieren ->Optionen -> Live-Update) oder irgendwelche Icons, die verschwinden (ich glaube bei JCH) usw.

    Musst halt auch dein Template genauer untersuchen!


    Dieses 'unsafe-inline' bzw. 'unsafe-eval' ist natürlich mit Vorsicht zu genießen. Hier eventuell mit script- bzw. style-hashes arbeiten. Das ist wirklich ein nicht ganz einfaches Thema. Muss man sich echt einarbeiten.


    Dieses 'unsafe-inline" wertet eine Webseite echt ab, wenn man sie beispielsweise mal über siwecos untersuchen lässt.

    Vielleicht besser sogar auf CSP verzichten. Musst mal untersuchen.


    Wird ein paar Wochen oder Monate dauern, bis das optimal eingestellt ist.


    In J3 nutze ich das externe Plugin, in J4 ist das ja dabei. Ich konnte da jetzt keinen großen Unterschied feststellen.

  • Ich kann mich den Ausführungen von JoomlaWunder nur anschließen.


    Um dem Fehler auf den Grund zu gehen kann man sich die Meldungen in der Browser Konsole ansehen.


    Gibt nur einen "echten" Unterschied zwischen .htaccess und dem Plugin. Wenn der Header in der .htaccess gesetzt wird sendet der Server den header unabhängig von Joomla also bei jeder Anfrage an den Server. Das Plugin wird den Header nur setzen wenn "Joomla" auch ausgeführt wird.

  • Hallo,

    danke erst mal für die schnellen Meldungen. Mail-Report konnte mir auch selbst einfallen. ;-)

    Ich betreibe Joomla 4 möglichst ohne zusätzliche Erweiterungen. Weniger ist mehr ist meine Devise. Als Template verwende ich Cassiopeia, welches bei der Erstinstallation dabei ist. Hab das Template kopiert und mit neuem Namen versehen.

    Das Problem mit "unsafe-inline" ist mir bekannt. Deshalb kommt das in meiner neuen Homepage nicht mehr vor. Bei Joomla 3 ließ sich das nicht umgehen, wenn die css-Anweisungen nicht verloren gehen sollten. Der Code im ersten Post entstammt Joomla 3 und kommt (noch) nicht in Joomla 4 zur Anwendung. Aber "default-src 'self' oder auch 'none' sollten zur Anwendung kommen. Das ist mein Problem, welches mich hier umtreibt.

    Thema Hoster ist mir auch schon bekannt.

    #zero24 Ich kann nicht .htaccess und den Header bearbeiten. Entweder oder. Sonst gibt's Fehlermeldung vom Server. Das Thema hatte ich mal vor Jahren mit meinem Hoster. Bei Joomla 4 habe ich mich nun für Header bearbeiten (Plugin) entschieden. Die .htaccess belasse ich wie nach der Installation.

    Ich will nun erst mal per Mailreport sehen, was da machbar ist und melde mich in den nächsten Tagen wieder.

    Gruß

  • Hallo,

    ich hab untersucht, was noch geblockt wird. Irgendwie finde ich den Versand per Mail nicht. :-( Egal. Mein Provider teilte mir mit, dass sie keinen Einfluss drauf nehmen. Also ist es nur mein Problem. Es kam der Hinweis auf CORS. CORS habe ich unter Joomla bewusst deaktiviert, da ich keine externen Quellen verwende (verwenden will). Dennoch hab ich einen Test unternommen, bei dem ich CORS zugelassen habe. Die Regel war auf source-src 'self' gesetzt. Aber es gab keine Änderung.

    Nachfolgend die Fehlermeldungen, die ich der Browserkonsole entnommen habe:


    Content Security Policy: Die Einstellungen der Seite haben das Laden einer Ressource auf inline blockiert ("default-src"). sbrl.de

    Content Security Policy: Die Einstellungen der Seite haben das Laden einer Ressource auf inline blockiert ("default-src"). sbrl.de:25:1

    Content Security Policy: Die Einstellungen der Seite haben das Laden einer Ressource auf inline blockiert ("default-src"). 12 sbrl.de

    Content Security Policy: Die Einstellungen der Seite haben das Laden einer Ressource auf inline blockiert ("default-src"). resource:593:10


    Ich werde nicht schlau daraus, da es sich bei allen Resourcen um eigene handelt. Außerdem habe ich nirgends die Regel 'inline' gesetzt. Hat jemand eine Idee?

  • Wo kann man sich das ansehen, es scheint noch irgendetwas zu geben welches inline geladen wird.

  • Ha, die Seite hatte ich mir angeschaut aber keine CSP Meldung gefunden ;)


    Für mich stellt sich die Frage, wie ich das beseitigen / abstellen / verändern kann.

    Suchen und entfernen :D


    Ich könnte mir vorstellen das es eine entsprechende Anweisung im Template gibt, wenn der Code z.B, mit der Methode "addStyleDeclaration" o.ä. geladen wir kann man im Plugin die Generierung der nonce bzw der hashes aktivieren. Sollte es "direkt" also an der Joomla API vorbei in die Seite eingebaut werden gibt es zwei Möglichkeiten: Löschen oder auf addStyleDeclaration (J3 + J4) bzw. den WebAssetManager (J4) umbauen.

  • Nee, kannste auch nicht finden. Ich mach das immer nur temporär. Hab nun aber dauerhaft "default-src 'self'" gesetzt. Unter https://sbrl.de ist das nun einsehbar. Ein Teil des Templates fehlt, Formatierungen sind nicht vorhanden, eine Bildergalerie ebenfalls.

    Was heißt genau, dass es aussieht, als wenn etwas "inline" geladen wird?

    Zur Information: Script- und Style hashes sind aktiviert.

    Noch was hab ich vom Hoster erfahren, was sich mit zero24 deckt. Es können auch Anweisungen aus dem Template sein. (Also Cassiopeia.)

  • Ok so jetzt haben wir eine Liste:


    Es sind also ein paar inline styles & scripte. aber style-src und script-src sind nicht gesetzt.


    Daher wäre der erste Schritt: "script-src {script-hashes} style-src {style-hashes}" in den CSP mit aufnehmen. Dann sollten nur noch die Meldungen übrig bleiben welche an der Joomla API vorbei gegangen sind.

  • Wichtig ist die Werte sind "{style-hashes}" und "{script-hashes}" am besten auch noch zusätzlich 'self' für script-src und style-src freigeben,

  • Da bin ich jetzt überfordert. Ich dachte, dass ich das an der richtigen Stelle eingetragen hätte. (Screenshot)

    Ja das ist auch alles richtig. Anscheinend sind die styles und scripte aber nicht über die Joomla API in die Seite eingebaut worden.


    Daher können wir bis dahin die hashes manuell pflegen. Zeitnah solltest du dich aber mit deinem Erweiterungsentwickler in Verbindung setzen und Ihn bitten von allen inline event handlern und inline scripten / styles absehen. Als ersatz am besten "addEventListener" via addStyleDeclaration (J3 + J4) bzw. den WebAssetManager (J4) umbauen.


    Bis dahin sollten die ersten Meldungen mit diesen Einstellungen weg gehen.

    Code
    style-src 'self' {style-hashes} 'sha256-sujjz1/eEt5/AsY49fE9czFYff38zL+vd9rV3aCKHq8='
    
    script-src 'self' {script-hashes} 'unsafe-hashes' 'sha256-FQMQvf1kjwkDkcAPX9doTgEMd+dt8mHNygcDN/ApAwI=' sha256-Rilei2X8YIvp5aIpDmT37tsxcdGrjZEFgUGyS7TE4t0=' 'sha256-WmI9MVrQsmomsyOpUYPMrwQ3zFMpy+aHTe7PstSinGw='
  • Wie schon gestern mitgeteilt, bin ich an einem Punkt angekommen, der mich überfordert. Zum Thema Hashes hatte ich mich vor Jahren eingelesen. Aber bereits da festgestellt, dass das einige Nummern zu groß für mich ist.

    Die oben angeführten Einstellungen habe ich ausprobiert, ohne aber zu wissen was ich da tue. :-( Leider hat es nichts gebracht. Aktuell habe ich folgende Einstellungen gesetzt:

    default-src 'self' 'unsafe-inline'

    objekt-src 'self'

    script-src 'self' 'unsafe-inline'

    Ich weiß, das 'unsafe-inline' Element macht eigentlich wieder kaputt, was ich mit der 'self' Anweisung aufgebaut habe. Einen anderen Weg sehe ich im Moment nicht. Oder ich verzichte ganz auf die "default-src" Anweisung. Was den Entwickler des Templates betrifft, hatte ich die Hoffnung, dass die Entwickler von Joomla wissen, was sie da tun und ein brauchbares Template mitgeben. :-(

    Dennoch Dank an alle, die hier mitgeholfen haben! Falls noch jemand ne gute Idee hat, ich werde den Thread weiter beobachten.

  • Was den Entwickler des Templates betrifft, hatte ich die Hoffnung, dass die Entwickler von Joomla wissen, was sie da tun und ein brauchbares Template mitgeben.

    Ich kann dir versichern das ist der Fall ;) Aber in deinem Fall scheinen noch weitere Erweiterungen auf der Seite geladen zu werden welche noch inline scripte benutzen.


    Diese können aber von Joomla nur verarbeitetet werden wenn diese auch über die Joomla API eingebaut werden, Wenn die an der Joomla API vorbei in die Seite eingebaut werden muss der Erweiterungsentwickler selbst eine Unterstützung für CSP liefern. :)