Dieser Beitrag beschreibt, wie man seine WordPress auf aktive HTTP Header prüfen kann. Es folgen 2 METHODEN die Sicherheits-Header bei WordPress einzubauen.
HTTP Security Headers, Security Response Headers, oder einfach nur Sicherheits-Header… Sie leisten einen wichtigen Beitrag zur Sicherheit einer WordPress Website und schützen sie zusätzlich vor Hackangriffen.
Neben den üblichen Sicherheitsmaßnahmen für WordPress, sollten auch die Security Header auf der Website eingebaut werden.
Was sind HTTP Security Header?
Sobald ein Besucher eine Website aufruft, beginnt der Browser mit dem Webserver zu kommunizieren, der die Seite hostet. Die Security Header werden sowohl auf der Browser- als auch auf der Serverebene verwendet.
Es handelt sich um Richtlinien, die den Browser anweisen, wie er sich vor Bedrohungen schützen kann. Der Webbrowser wird z.B. angewiesen Verbindungen zu sichern, den Zugriff auf Gerätefunktionen zu kontrollieren und den Informationsfluss zwischen Bwoser und Server zu verwalten.
Das bietet einen erhöhten Schutz gegen Clickjacking, Cross-Site-Scripting (XXS), Cookie-Hijacking, MIME-Angriffe und viele andere Szenarien.
Das sind die sieben wichtigsten HTTP-Sicherheitsheader:
- Content-Security-Policy (CSP): Dieser Header legt fest, welche Ressourcen auf einer Seite geladen werden dürfen. Dadurch wird Cross-Site-Scripting (XSS) verhindert, indem unsichere oder schädliche Skripte von der Ausführung auf der Seite ausgeschlossen werden.
- Strict-Transport-Security (HSTS): Dieser Header erzwingt, dass der Browser alle zukünftigen Anfragen an die Website über HTTPS statt über das unsichere HTTP-Protokoll sendet. Damit werden Man-in-the-Middle-Angriffe verhindert, bei denen Angreifer die Kommunikation zwischen Browser und Server abfangen könnten.
- Referrer-Policy: Mit diesem Header wird bestimmt, welche Informationen über den Ursprung einer Anfrage an eine Website gesendet werden. Dies verhindert, dass sensible Daten wie persönliche Informationen und Anmeldedaten durch Verweis-Header preisgegeben werden.
- X-Content-Type-Options: Durch das Setzen dieses Headers wird verhindert, dass der Browser MIME-Typen automatisch errät, wenn der Server den MIME-Typ der Datei nicht explizit angibt. Außerdem vermeidet dieser Header, dass der Browser unsichere oder unerwartete Dateitypen interpretiert, was Cross-Site-Scripting-Angriffe unterbindet.
- X-Frame-Options: Dieser Header sorgt dafür, dass eine Website nicht in einem iFrame eingebettet werden kann. Dadurch wird Clickjacking verhindert, bei dem ein Angreifer eine bösartige Seite in einem iFrame auf einer legitimen Website platziert, um Benutzer dazu zu bringen, auf versteckte Schaltflächen zu klicken.
- Permission-Policy: Dieser Header erlaubt es Website-Administratoren, die Zugriffsrechte für bestimmte Funktionen und APIs auf der Website zu definieren. Durch das Festlegen dieser Berechtigungen werden die Risiken von Cross-Site-Scripting, Clickjacking und anderen Angriffen reduziert.
- X-XSS-Protection: Dieser Header schaltet den eingebauten XSS-Schutz im Browser ein oder aus. Ist der Schutz aktiviert, kann der Browser versuchen, unsichere Skripte automatisch zu blockieren.
Website auf Security-Header testen
Um zu prüfern, ob die HTTP Sicherherheits Header auf einer Website aktiv sind, kann man das Prüf-Tool der Seite; securityheaders.com nutzen.
Einfach die Domain-URL eingeben und auf Scan klicken.
Wie können die HTTP-Security-Header bei WordPress hinzugefügt werden?
Es gibt wie immer mehr als nur einen Weg, die Sicherheitsheader bei WordPress einzubauen. Ich möchte hier nur auf die beiden Optionen eingehen, die ich für die besten halte.
HTTP Header via Plugin bei WordPress einbauen
Es gibt diverse WordPress Plugins, die sich dieser Aufgabe annehmen. Ich persönlich würde das Headers Security Advanced & HSTS WP – Plugin von Andrea Ferro nutzen. Es ist schlank gecoded, gradlinig aufgebaut und bedarf keiner besonderen Konfiguration!
Meiner Erfahrung nach, muss das Plugin einfach nur installiert und aktiviert werden. Es erledigt seinen Job, ohne dass man es zuvor konfigurieren muss.
HTTP Header via .htaccess Datei bei WordPress hinzufügen
Da ein zusätzliches WordPress Plugin, potenziell ein weiteres Risiko für die WordPress Installation darstellt, nutze ich zum Hinzufügen der Sicherheits Header lieber die .htaccess
Datei.
# Security Headers
<IfModule mod_headers.c>
Header set Content-Security-Policy "upgrade-insecure-requests"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set X-Xss-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "geolocation=self"
</IfModule>
Wo muss der Code genau eingefügt werden?
Die .htaccess
Datei findest du im Root, also in Stammverzeichnis deiner WordPress Installation. Wenn du das Verzeichnis mit einem FTP-Manager öffnest, muss ggf. das Anzeigen von Hidden Files erzwungen werden.
Bei FileZilla: Server -> Force showing hidden files
Achtung:
Bevor Veränderungen am Dateisystem vorgenommen werden, sollte zuvor ein Backup der Website erstellt werden.
Der Code sollte ganz oben in der Datei eingefügt werden, vor # BEGIN WordPress.
Füge den Code einfach am Anfang der Datei ein und speichere sie danach ab. Prüfe die Website auf Funktionsfähigkeit und korrekte Darstellung.
Der finale HTTP Heder Security Check
Nun kann wieder das Tool von securityheaders.com genutzt werden, um den Einbau der Sicherheits Header auf Erfolg zu testen.
Wir erinnern uns, dass uns beim ersten Test die Schulnote F attestiert wurde.
Im Idealfall ist die Bewertung nun auf A+ angestiegen!
Security Header bei WordPress einbauen [Video]
Fazit
HTTP-Security-Header sind ein wichtiger Beitrag zu dem komplecxen Thema der WordPress Sicherheit. Auch wenn das manuelle Einfügen dieser Header via .htaccess
ein bissel kniffelig ist, würde ich dieses Verfahren gegenüber einem Plugin immer vorziehen.