In einem Gastbeitrag im Blog des IT-Sicherheitsexperten Mike Kuketz bin ich auf ein Kapitel zur „Datenschutz-Beurteilung“ gestoßen. Dort wird unter anderem der Service von Webbkoll (s.u.) vorgestellt. Ähnlich wie bei einem Pagespeed-Test kann man sich dort seine Website scannen und bewerten lassen, allerdings nicht in Sachen Geschwindigkeit, sondern hinsichtlich Datenschutzfreundlichkeit bzw. Datenschutzniveau. Nach dem Scan bekommt man nicht nur die Aus- sowie Bewertung präsentiert, sondern auch umfangreiche Informationen zu den einzelnen Möglichkeiten und Konfigurationsfaktoren sowie Verweise auf weitere Quellen.
Eine der Möglichkeiten, seine Website sicherer zu machen und damit auch das Risiko eines Datenmissbrauchs durch Datenminimierung, Integrität und Vertraulichkeit, datenschutzfreundliche Voreinstellungen, Sicherheit der Verarbeitung (im Sinne der Artikel 5.1c, 5.1f, 25 und 32.1–2 der DSGVO) zu vermeiden sind die besagten HTTP Security Header. Und um einige dieser soll es jetzt im Folgenden gehen.
Was sind „HTTP Security Header“ und was bewirken sie?
Mit Hilfe der HTTP Security Header lassen sich zusätzliche Schutzmechanismen des Browsers aktivieren, mit dem Deine Website aufgerufen bzw. angesurft wird und die nicht standardmäßig aktiviert sind. David Jardin spricht in diesem Zusammenhang treffend von den „schlummernden Wachhunden des Browsers“, die man mit Hilfe der HTTP Security Header erwecken könne.
Diese „Erweckung“ geschieht durch die Implementierung entsprechender Anweisungen in der .htaccess-Datei im Rootverzeichnis auf Deinem Server. Dies hat zur Folge, dass der Browser der Besucherin bzw. des Besuchers diese Anweisungen beim Aufrufen Deiner Website übermittelt bekommt und seine „schlafenden Wachhunde“ aktiviert. Damit sorgen die HTTP Security Header dann nicht nur für zusätzliche Sicherheit auf Deiner Website, sondern bewirken ebenso einen Schutz für Deine Besucherinnen und Besucher.
Voraussetzung und ein wichtiger Hinweis
Wie ich bereits geschrieben habe, möchte ich in diesem Artikel die Einrichtung der HTTP Security Header mit Hilfe der Eintragung von Anweisungen in die .htaccess-Datei erläutern. Dies hat zur Voraussetzung, dass Dir Dein Hostinganbieter den Zugriff auf und die Bearbeitung der .htaccess-Datei auch gestattet. Tut er dies nicht, dann brauchst Du hier nicht weiterzulesen, sondern müsstest ein Plugin zu Hilfe nehmen. Geeignete Plugins findest Du in der WordPress Repository. Allerdings möchte ich hier keine direkte Empfehlung aussprechen, da ich keinerlei Erfahrungen mit solchen Plugins gesammelt habe. Ausgehend von den Bewertungen kannst Du Dir mal „Redirection“ von John Godley oder „HTTP Headers“ von Dimitar Ivanov anschauen.
Bitte lasse Vorsicht walten!
Die .htaccess-Datei ist ein hochsensibler Part Deiner WordPress-Installation. Nicht jede WordPress Installation ist gleich, allein schon nicht mit Blick auf das Theme und die Plugins, die zum Einsatz kommen. Deshalb ist es mit „Copy & Paste“ der unten vorgestellten Eintragungen nicht unbedingt getan und es kann auch sein, dass sie bei Dir nicht funktionieren oder Probleme verursachen. Das kann sogar so weit gehen, dass Deine Website (auch für Dich) nicht mehr erreichbar ist. Deshalb:
- erstelle zuerst ein Backup Deiner Website und zusätzlich eines der .htaccess-Datei, bevor Du daran Hand anlegst;
- gehe Schritt für Schritt vor, d. h. trage die Header einzeln ein und teste anschließend, ob Deine Seite noch einwandfrei funktioniert (und zwar im Front- wie im Backend!), bevor Du mit dem nächsten Header weitermachst.
Sollte es bei Dir zu Problemen kommen, lösche die in der .htaccess-Datei getätigten Eintragungen wieder bzw. spiele die zuvor gesicherte Version der .htaccess-Datei wieder ein, wenn alle Stricke reißen sollten.
Wenn Du Dir nicht sicher bist, lass’ es lieber und wende Dich ggf. an eine Fachfrau bzw. einen Fachmann.
Zur Einrichtung der „HTTP Security Header“
Die nachfolgenden fünf vorgestellten HTTP Security Header sind nur eine Auswahl. Bei meinen Recherchen kam heraus, dass es sich bei diesen um die wichtigsten und die für WordPress betriebenen Websites am einfachsten einzurichtenden Header sind.
So bleibt bspw. die „Content-Security-Policy“ hier unberücksichtigt. Dabei handelt es sich zwar um den wohl mächtigsten Header, aber leider auch um einen, der in Content Management Systemen wie WordPress die meisten Probleme macht. Die Aktivierung dieses Headers ist eine ziemlich knifflige und aufwendige Angelegenheit. Es müssen viele Ausnahmen korrekt konfiguriert werden, damit es nicht zu schwerwiegenden Problemen bis zur Nichterreichbarkeit der Website kommt. Nicht nur, dass die Mächtigkeit dieses Headers durch die vielen Ausnahmen kastriert wird, so dass die Implementierung mit Blick auf den dann noch verbleibenden Nutzen fraglich wird. Auch weil die Konfiguration penibel auf die jeweilige Installation individuell angepasst werden muss, macht eine eingehendere Vorstellung hier fraglich. Aus diesem Grund ist dieser Header hier nur der Vollständigkeit halber erwähnt, aber nicht weiter behandelt.
Ich komme zu den fünf HTTP Security Header, bei denen es weniger kompliziert ist und deren Aktivierung bereits für eine ganze Menge an zusätzlicher Sicherheit sorgt.
HTTP Strict Transport Security
Ich gehe einmal davon aus, dass Du Deine Website schon längst auf „https“ umgestellt hast. Wenn nicht, dann rate ich Dir dringend dazu, das nachzuholen. Wenn Deine Website bereits auf „https“ umgestellt ist, dann kannst Du mit dem „HTTP Strict Transport Security“ Header dafür sorgen, dass Deine Website ausschließlich nur über die verschlüsselte Verbindung via „https“ erreichbar ist und jegliche Anfrage bzw. jeder unverschlüsselte Kommunikationsversuch über „http“ strikt auf „https“ umgeleitet wird. Damit schützt Du Deine Besucherinnen und Besucher vor möglichen „Man-In-The-Middle“ Angriffen, indem die verschlüsselte Kommunikation mit Deiner Website erzwungen wird und die unverschlüsselte Kommunikation gar nicht mehr möglich ist. Nochmal: dieser Header macht natürlich nur Sinn, wenn Deine Seite auf „https“ umgestellt ist.
Der Eintrag für Deine .htaccess-Datei sieht wie folgt aus:
<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
</ifModule>
Mit „max-age“ wird die Dauer definiert, wie lange sich der Browser merken soll, dass Deine Website ausschließlich via „https“ erreichbar ist. Diese Dauer muss in Sekunden angegeben werden. Im obigen Beispiel entsprechen die 31536000 Sekunden einem Jahr, was so als Konfiguration empfohlen wird.
Sofern Du Subdomains nutzt, kannst Du mit Hilfe eines optionalen Zusatzes den Header entsprechend erweitern. Wie das geht und noch einiges mehr, erfährst Du unter hier.
X‑XSS Protection
Dieser Header wird nur vom Internet Explorer, Chrome und Safari unterstützt, wobei Chrome die Unterstützung mittlerweile auch eingestellt hat. Trotzdem kannst Du diesen Header aktivieren, um alle Deine Besucherinnen und Besucher, die noch mit älteren Browserversionen unterwegs sind, den entsprechenden Schutz zu gewährleisten. Der Schutz, den der „X‑XSS Protection“ Header aktiviert, wird mittlerweile durch die oben angesprochene „Content-Security-Policy“ bereitgestellt. Aber wie schon gesagt, spare ich mir aus den genannten Gründen die Behandlung der „Content-Security-Policy“ hier aus.
Wogegen schützt nun dieser Header? Die „X‑XSS Protection“ schützt vor sogenannten „Cross-Site-Scripting“ Attacken, indem sie in den unterstützen Browsern das Laden von entsprechend komprimittierten Seiten unterbindet.
Der Eintrag für Deine .htaccess-Datei sieht wie folgt aus:
<ifModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</ifModule>
Weitere Infos findest Du hier.
X‑Content-Type-Options
Der Header „X‑Content-Type-Options“ kann vor „Drive-By-Download“ Attacken schützen. Hintergrund ist, dass Browser bei nicht korrekt deklarierten Medientypen so eingestellt sind, dass sie das Datenformat erraten (das sogenannte „MIME-Sniffing“). Das könnte durch einen potenziellen Angreifer ausgenutzt werden. Durch die Aktivierung des „X‑Content-Type-Options“ Header wird dieses Erraten des Datenformats unterbunden.
Der Eintrag für Deine .htaccess-Datei sieht wie folgt aus:
<ifModule mod_headers.c>
Header set X-Content-Type-Options nosniff
</ifModule>
Weitere Infos findest Du hier.
X‑Frame-Options
Mit dem „X‑Frame-Options“ Header kannst Du Dich vor „Click-Jacking“ Attacken schützen, also davor, dass Deine Website oder Teile davon auf fremden Seiten mittels „frame“, „iframe“, „embed“ oder „objekt“ eingebunden werden, Du Dich also vor Content-Diebstahl schützt.
Aber Achtung! Das bringt allerdings den Nachteil mit sich, dass auch auf Deiner Website das Einbinden von bspw. YouTube-Videos, Tweets etc. nicht mehr funktioniert.
Der Eintrag für Deine .htaccess-Datei sieht wie folgt aus:
<ifModule mod_headers.c>
Header set X-Frame-Options DENY
</ifModule>
Ebenso Vorsicht beim Einsatz von Pagebuildern! Mit der Einstellung »DENY« kann es Probleme mit dem einen oder anderen Pagebuilder geben. Der hauseigene Gutenberg-Editor zeigt meinem Wissen nach keine Probleme. Anders sieht es aber z. B. beim beliebten und weit verbreiteten Elementor Pagebuilder aus. Der funktioniert mit dieser Einstellung nicht mehr. Solltest Du den Elementor Pagebuilder oder einen anderen verwenden, der mit dieser Einstellung Probleme hat, dann verwende statt „DENY“ die Einstellung „SAMEORGIN“. Ein etwas aufwendiger Kompromiss wäre, den Header-Eintrag für die X‑Frame-Options jedes mal für die Zeit, wenn Du eine Seite oder einen Beitrag mit einem Pagebuilder baust, aus der .htaccess-Datei zu löschen und anschließend wieder einzufügen.
Ob „DENY“ oder „SAMEORGIN“, mit beiden Einstellungen wirst Du jedoch feststellen, dass Du im Backend bei den Plugins einen leeren Frame zu sehen bekommst, wenn Du auf »Details ansehen« klickst. Das kannst Du umgehen, indem Du den Link zu den Details in einem neuen Tab oder Fenster öffnest.
Weitere Infos findet Du hier.
Referrer-Policy
Mit diesem Header schützt Du Deine Website nicht direkt vor Angriffen, tust aber was für den Schutz der Daten Deiner Besucherinnen und Besucher. Verlinkst Du eine andere Website und eine Besucherin bzw. ein Besucher klickt auf diesen Link und der Betreiber der verlinkten Website setzt entsprechende Analysetools ein, so unterbindet der „Referrer-Policy“ Header die Übermittlung der Information, das sie bzw. er von Deiner Seite kommt.
Der Eintrag für Deine .htaccess-Datei sieht wie folgt aus:
<ifModule mod_headers.c>
Header set Referrer-Policy: no-referrer
</ifModule>
Weitere Infos findest Du hier.
Referenzen / Quellen
Da ich alles andere als ein Fachmann bin, habe ich mich über den Sinn und Zweck sowie die Einrichtung der HTTP Security Header mittels einer Recherche im Internet kundig gemacht. Mein rudimentäres Wissen basiert auf folgenden Quellen, die ich Dir abschließend noch einmal gerne ans Herz legen möchte, wenn Du mehr über die HTTP Security Header erfahren möchtest:
- »How to add HTTP Security Headers in WordPress« auf wpbeginners.com: In diesem Artikel wird kurz beschrieben, um was es bei den HTTP Security Headers geht und wie man sie einrichtet. Das Code Snippet für die .htaccess-Datei, mit dem ich gearbeitet und experimentiert habe, kommt aus diesem Artikel. Außerdem findest Du dort auch Anleitung, wie Du HTTP Security Headers mit Hilfe eines Plugins einrichten kannst.
- »Verantwortungsvolles Marketing: Es geht auch ohne Google, Facebook, Xing und Co.«: Der schon erwähnte Artikel auf dem Blog von Mike Kuketz, der mich auf das Thema der »HTTP Security Header« aufmerksam gemacht und den Stein erst ins Rollen gebracht hat (siehe dort Kapitel 3.6 »Datenschutz-Beurteilung«).
- webbkoll: Ein Service, mit dem Du Deine Website testen lassen kannst, wie es um die Sicherheit in Sachen Datenschutz bestellt ist.
- MDN Web Docs moz://a: Sehr umfangreiche Informationen zu den vielen HTTP Header findest Du auf den Developerseiten von mozilla.org.
- „WordPress-Sicherheit mit HTTP-Security-Header erhöhen“: Ein interessanter Artikel zum Thema von Thorsten Faltings auf elbnetz.com.
- „HTTP-Security-Header – Website-Sicherheit erhöhen“: Ein weiterer guter Artikel zum Thema auf codingblatt.de.
- „Security-Header: So machst du deine Website sicher“: Ein sehr umfangreicher und informativer Artikel zum Thema von Markus Seyfferth auf drweb.de.
- Last but not least der oben schon erwähnte und verlinkte Artikel „HTTP Security-Header – Wie Sie die schlummernden Wachhunde des Browsers wecken“ von David Jardin auf hosteurope.de.
Schreibe einen Kommentar