Ein paar Fragen konnte ich über das Forum hier auch schon sehr schnell klären. Jetzt möchte ich aber etwas beitragen, was Admidio ergänzen kann. Achtung, langer Text....
Ich habe lange Erfahrung mit verschiedensten System, die alle toll funktionieren und grandiose Webseiten erzeugen und den User dabei toll unterstützen. Aber leider wird jedoch häufig die Sicherheit der Systeme auf Serverseite vernachlässigt, man will ja lieber laufende Websites statt endlos lang die Serverkonfiguration bearbeiten.

Die Sicherheit von Admidio stelle ich überhaupt nicht in Frage, ich möchte lieber auf eine serverseitige Ergänzung zur Verbesserung eingehen. Dafür gibt es wirksame (aber leider immer noch zu unbekannte) Möglichkeiten.
Die Security Header:
Sie sind ein sehr wichtiges Tool, um die Sicherheit auf Websites zu erhöhen. Auch ich habe erst letztes Jahr durch eine Nextcloud-Instanz, die ich aufgesetzt habe, intensiv damit Bekanntschaft machen dürfen. Nextcloud setzt diese Header nämlich systemseitig intensiv ein und verweist in der eigenen Dokumentation auch auf die Verbesserung der Sicherheit durch die verschiedenen Einstellungsmöglichkeiten.
Hier dazu zwei umfangreiche Artikel, die die Hintergründe und Zielsetzung gut erklären:
* https://www.tutkit.com/de/blog/200-secu ... it-und-seo
• https://kulturbanause.de/blog/http-security-header/
• und hier ein super Vortrag vom CCC zum Thema: https://youtu.be/xbPK6ux9C7o?si=9vw-YGDran_Dhn0w
Eigene Seiten testen:
Unter https://securityheaders.com/ oder https://observatory.mozilla.org könnt ihr auch eure eigene Seite testen und bekommt eine Auswertung, welche Header aktiv sind und welche nicht. Beide Seiten haben etwas unterschiedliche Kriterien zur Bewertung, aber es sind alle Einstellung umfangreich dokumentiert und mit Anwendungsbeispielen bzw. Empfehlungen versehen. Die ganzen Optionen muss man halt wirklich für seine eigenen Bedürfnisse anpassen und passen nicht immer für jede Website gleich gut.
Ich würde mir für Systeme wie Admidio wünschen, dass grundlegende Einstellungen über eine bei der Installation mitgelieferte .htaccess schon gesetzt werden um eine Grundsicherheit zu erreichen und den Anwender zu unterstützen.
Unten seht ihr die .htaccess, die ich aktuell benutze. Diese habe ich nach etlichen Tests in dieser Form für meine Admidio-Instanz erstellt.
Vor Allem die Einstellungen des Headers "Content-Security-Policy" wirken sehr empfindlich auf die Funktionalität. Skripte, CSS, Bilder usw sind davon betroffen. Aber sie sind auch sehr mächtig, um die eigene Seite zu sichern. Hier musste ich einige Tage testen, um die benötigten Funktionen für Admidio herauszufinden. Hier hilft die Chrome-Entwickler-Konsole sher gut weiter wenn man zu restriktiv war.
Hier kann man natürlich noch viel optimieren wenn man möchte. Das Thema ist unglaublich vielfältig. Aber es lohnt sich meiner Meinung nach wirklich, Systeme wie Admidio dahingehend noch besser zu machen, weil wir Daten verwalten, die auch geschützt werden müssen.
Unten noch meine .htaccess-Einträge der Security Header, die für Admidio so laufen und für mich einen guten Kompromiss zwischen Sicherheit und Funktionalität bieten. Ich erhalte damit eine A, bzw. B+-Bewertung bei den beiden oben genannten Prüfungstools.
Code: Alles auswählen
# Ich gehe hier rein auf Security Headers ein
<IfModule mod_headers.c>
Header always set strict-transport-security "max-age=31536000; includeSubDomains"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Cross-Origin-Resource-Policy "same-origin"
Header always set Permissions-Policy "accelerometer=(), autoplay=(), camera=(), cross-origin-isolated=(), display-capture=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=(), clipboard-read=(), clipboard-write=(), gamepad=(), hid=(), idle-detection=(), interest-cohort=(), serial=()"
Header always set Content-Security-Policy "default-src 'none'; script-src 'self' 'unsafe-inline'; img-src 'self' data: ; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; form-action 'self' ;
# wenn es Probleme gibt, kann der Header Content-Security-Policy auskommentiert werden. Besser ist aber, zu schauen, wo man besser einstellt
</IfModule>

Schöne Grüße
Sven