Optimierung für CSP-Header

Discussions and requests related to new CMSimple features, plugins, templates etc. and how to develop.
Please don't ask for support at this forums!
Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Optimierung für CSP-Header

Post by Michael_G » Wed Apr 03, 2024 10:20 pm

Hallo allerseits,

Wer CSP (Content Security Policy) ernst nimmt und seine Website richtig absichern möchte, muss folgendes im Template vermeiden:

Code: Select all

<body<?=onload();?>>
Sonst meckert der Browser im Stillen vor sich hin (nur sichtbar im Entwicklermodus/Quellcodeansicht) und die Funktionalität leidet.

Damit Javascript (auf meiner Website nur für den Onlineeditor, also im Adminmodus erforderlich) funktioniert, muss diese Zeile leider im Template drin bleiben, sonst hätte ich sie einfach entfernt.

Gestern fand ich einen Workaround für den Fall …
Ersetze diese Zeile im Template:

Code: Select all

<body<?=onload();?>>
… durch diesen Dreizeiler:

Code: Select all

<?php if (XH_ADM):?>
	<body id="body" <?=onload();?>>
<?php endif;?>
So wird auf Websites, die Javascript wirklich nur im Admin-Modus (Backend) benötigen, der für CSP-Ausführung störende onload-Aufruf bei Websitebesuchern nicht ausgeführt. Der Webmaster/Admin kann aber sein Backend wie gewohnt benutzen. Alle sind zufrieden. :-)

Dieser Tipp darf gern in die Knowledge Base (viewforum.php?f=41) kopiert oder verschoben werden. ;-)
Last edited by Michael_G on Sat Apr 06, 2024 7:31 pm, edited 1 time in total.
Ciao
Michael

Let's Encrypt!

manu
Posts: 1091
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Optimierung für CSP-Header

Post by manu » Thu Apr 04, 2024 8:07 am

Hallo Michael
Die body onload Funktion ist nur noch für den CKEditor notwendig. Dein issue betrifft wohl diesen Editor und sollte wohl da abgelegt werden.

Code: Select all

<?php if (XH_ADM):?>
	<body id="body" <?=onload();?>>
<?php endif?>
Wenn dies doch benötigt wird, solltest Du den ELSE Fall nicht vergessen.
Gruss
manu

manu
Posts: 1091
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Optimierung für CSP-Header

Post by manu » Thu Apr 04, 2024 8:20 am


Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Re: Optimierung für CSP-Header

Post by Michael_G » Sat Apr 06, 2024 7:37 am

manu wrote:
Thu Apr 04, 2024 8:20 am
Da war doch mal was dazu.
Hallo manu,
darauf habe ich keinen Zugriff.
Ciao
Michael

Let's Encrypt!

Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Re: Optimierung für CSP-Header

Post by Michael_G » Sat Apr 06, 2024 7:44 am

manu wrote:
Thu Apr 04, 2024 8:07 am
Hallo Michael
Die body onload Funktion ist nur noch für den CKEditor notwendig. Dein issue betrifft wohl diesen Editor und sollte wohl da abgelegt werden.

Code: Select all

<?php if (XH_ADM):?>
	<body id="body" <?=onload();?>>
<?php endif;?>
Wenn dies doch benötigt wird, solltest Du den ELSE Fall nicht vergessen.
Gruss
manu
Hallo manu,
danke für die rasche Antwort.
Ja, ich verwende den CKEditor. Habe es jetzt mal schnell umgestellt (den Workaround weggelassen, dafür TinyMCE5 als Editor eingestellt), aber dann fehlte das Backend komplett. Also Franks Adminmenü installiert.
Aber ohne Aufruf von <body id="body" <?=onload();?>> im Template funktioniert auch Franks Adminmenü nicht, denn es zeigt dann nur ein Hamburgermenü, aber die anderen wesentlichen Icons sind weg.
Auch Franks Adminmenü ist also auf JavaScript angewiesen.
Also Rollback …

Edit:
ELSE-Fall:
Bin leider kein PHP-Programmierer, habe den Workaround nur aus anderen Workarounds (Threads des Forums) abgeleitet.
Habe auch im Internet recherchiert und das als PHP-Anfänger so verstanden, dass hier kein „else” erforderlich ist.

Sorry, dass ich das im Open Development platziert hatte, bitte gern nach „Deutsch” verschieben und wenn mein Tipp
im ersten Beitrag keinen Fehler enthält, diesen in die Knowledgebase kopieren.
Schönes Wochenende!
Ciao
Michael

Let's Encrypt!

lck
Posts: 2973
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Optimierung für CSP-Header

Post by lck » Sun Apr 07, 2024 11:27 am

Michael_G wrote:
Sat Apr 06, 2024 7:44 am
Ja, ich verwende den CKEditor. Habe es jetzt mal schnell umgestellt (den Workaround weggelassen, dafür TinyMCE5 als Editor eingestellt), aber dann fehlte das Backend komplett. Also Franks Adminmenü installiert.
Aber ohne Aufruf von <body id="body" <?=onload();?>> im Template funktioniert auch Franks Adminmenü nicht, denn es zeigt dann nur ein Hamburgermenü, aber die anderen wesentlichen Icons sind weg.
Auch Franks Adminmenü ist also auf JavaScript angewiesen.
Habe das mal getestet ohne <?=onload();?> im body-Tag. Mit einem jungfräulichen XH 1.7.6. - TinyMCE5 erscheint, Backend alles normal.
fhs_adminmenu installiert, läuft auch. Frank's Adminmenü benötigt jQuery und das wird durch das Plugin eingebunden falls es noch nicht geladen wurde.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

manu
Posts: 1091
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Optimierung für CSP-Header

Post by manu » Sun Apr 07, 2024 4:47 pm

Michael_G wrote:
Sat Apr 06, 2024 7:44 am
...
Edit:
ELSE-Fall:
Bin leider kein PHP-Programmierer, habe den Workaround nur aus anderen Workarounds (Threads des Forums) abgeleitet.
Habe auch im Internet recherchiert und das als PHP-Anfänger so verstanden, dass hier kein „else” erforderlich ist.
...
Ohne ELSE hast Du im XH_ADM Fall überhaupt kein <body> Tag.

Den ELSE Fall gibt es:

Code: Select all

<?php else:?>
Aber Du kannst es ja so probieren:

Code: Select all

<body id="body" <?=XH_ADM? onload():'';?>>
Gruss
manu

Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Re: Optimierung für CSP-Header

Post by Michael_G » Sun Apr 07, 2024 7:39 pm

lck wrote:
Sun Apr 07, 2024 11:27 am
Michael_G wrote:
Sat Apr 06, 2024 7:44 am
Ja, ich verwende den CKEditor. Habe es jetzt mal schnell umgestellt (den Workaround weggelassen, dafür TinyMCE5 als Editor eingestellt), aber dann fehlte das Backend komplett. Also Franks Adminmenü installiert.
Aber ohne Aufruf von <body id="body" <?=onload();?>> im Template funktioniert auch Franks Adminmenü nicht, denn es zeigt dann nur ein Hamburgermenü, aber die anderen wesentlichen Icons sind weg.
Auch Franks Adminmenü ist also auf JavaScript angewiesen.
Habe das mal getestet ohne <?=onload();?> im body-Tag. Mit einem jungfräulichen XH 1.7.6. - TinyMCE5 erscheint, Backend alles normal.
fhs_adminmenu installiert, läuft auch. Frank's Adminmenü benötigt jQuery und das wird durch das Plugin eingebunden falls es noch nicht geladen wurde.
Hallo lck,
vielen Dank für Deinen Test.
Seltsam.
Ohne onload erhalte ich generell kein Backend …
– das Plug-in „FA” ist natürlich installiert und egal ob zwangsweise aktiv („auto”) oder nicht, es wird bei Bedarf von Plug-ins benutzt, also auch ohne auto=on
– jQuery ist ebenfalls bereit (neueste Vers. gewählt, ohne Migration), ich lasse es normalerweise nicht immer gleich laden (funktioniert sonst immer prima)

Für diesen Test habe ich FA und jQuery zwangsweise laden lassen (Bezeichnung „auto” ist irreführend, da es laut Beschreibung bei dieser Einstellung immer geladen wird).

Fazit: Kein Backendmenü und selbst mit der Alternative fhs_adminmenu wird nur dessen Hamburgermenü und darunter die Seitenauswahl angezeigt.
Werde später auch mal XH 1.76 völlig neu installieren und testen.
Ciao
Michael

Let's Encrypt!

Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Re: Optimierung für CSP-Header

Post by Michael_G » Sun Apr 07, 2024 7:58 pm

manu wrote:
Sun Apr 07, 2024 4:47 pm
Michael_G wrote:
Sat Apr 06, 2024 7:44 am
...
Edit:
ELSE-Fall:
Bin leider kein PHP-Programmierer, habe den Workaround nur aus anderen Workarounds (Threads des Forums) abgeleitet.
Habe auch im Internet recherchiert und das als PHP-Anfänger so verstanden, dass hier kein „else” erforderlich ist.
...
Ohne ELSE hast Du im XH_ADM Fall überhaupt kein <body> Tag.

Den ELSE Fall gibt es:

Code: Select all

<?php else:?>
Aber Du kannst es ja so probieren:

Code: Select all

<body id="body" <?=XH_ADM? onload():'';?>>
Gruss
manu
Danke für Deinen Tipp und den Link!
Ohne ELSE im XH_ADM-Fall kein <body>-Tag: Doch, habe ich. Mittels <?php endif;?> erreichte ich in dem Fall das Gleiche.
Habe es in der Quelltextansicht bei geöffnetem Editor gesehen.
Und wäre wirklich kein <body> da gewesen, hätte ich wohl auch die Webseite nicht editieren können?

Aber: vielen Dank für diesen Codeschnipsel:

Code: Select all

<body id="body" <?=XH_ADM? onload():'';?>>
Der bewirkt wirklich das Gleiche wie meiner, ist aber kürzer. :-)

Also vielen Dank für die Hilfe!
Ciao
Michael

Let's Encrypt!

olape
Posts: 2756
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Optimierung für CSP-Header

Post by olape » Mon Apr 08, 2024 5:42 am

Michael_G wrote:
Sun Apr 07, 2024 7:58 pm
Ohne ELSE im XH_ADM-Fall kein <body>-Tag: Doch, habe ich. Mittels <?php endif;?> erreichte ich in dem Fall das Gleiche.
Den verstehe ich nicht, bzw. das kann nicht sein.
manu hat Recht.
Michael_G wrote:
Wed Apr 03, 2024 10:20 pm

Code: Select all

<?php if (XH_ADM):?>
	<body id="body" <?=onload();?>>
<?php endif;?>
greift nur, wenn du angemeldet bist, sonst passiert einfach gar nichts.
Wenn du trotz allem einen Body-tag drin hattest, dann musst du den doppelt aufrufen.
Von dieser Stelle kommt er jedenfalls nicht.

Aber ganz grundsätzlich habe ich, so ich daran gedacht habe, auch schon bei einigen Sites das onload entfernt.
Bisher konnte ich da keine Einschränkungen feststellen. Ich nutze aber eben auch keinen ckeditor.

Wäre aber auch ein Punkt für die 1.8.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

Post Reply