Eure Website ist nicht sicher: Jetzt HTTP Security Header einbinden

Das Thema Sicherheit ist im digitalen Segment leider oft nicht so beliebt: Weder fördert es die Anzahl der Besucher auf eurer Website, noch sorgt es dafür, dass ihr mehr Umsätze generiert. Und dennoch ist diese Thematik extrem wichtig. Weil sie eben dafür sorgt, dass die Daten eures Unternehmens und eurer Kunden nicht irgendwo landen, wo sie nicht landen sollen. Schlimmer kann es kommen, wenn durch eine gehackte Internetseite Schadcode auf den Geräten des Besuchers platziert wird.

Stets aktuell bleiben

Wie bei jeder Software heutzutage ist es wichtig, dass der Code aktuell gehalten wird. Ist euer Content Management System wirklich auf dem neuesten Stand? Wie sieht es mit den Plugins aus? Wann wurden sie das letzte Mal aktualisiert? Und gibt es alte Skripte, die ihr einsetzt? Und wie sieht es mit den HTTP Security Headern aus?

Um letzteres geht es heute in meinem Blog-Beitrag. Das Hinzufügen von http Security Headern ist ein wichtiger Baustein, um eure Seite sicherer zu machen. Sie sorgen dafür, dass potenziellen Angreifern weniger Angriffsfläche geboten wird. Insbesondere automatisierte Bots, die nur auf fehlende HTTP Security Header aus sind, kann damit gut Einhalt geboten werden.

Und wenn ihr dann alles richtig gemacht habt, kann das Resultat eines entsprechenden Scans nämlich auch so aussehen:

Was sind HTTP Security Header?

Grundsätzlich funktioniert der Aufruf einer Internetseite immer nach dem gleichen Prinzip: Es wird eine Anfrage an die Website gesendet (z.B. wenn ihr eine Website besucht) und der Server antwortet dann auf diese Anfrage. Bei diesen Anfragen gibt der Webserver dem Browser Vorgaben, wie dieser die Website dann später genau aufrufen soll und welche Parameter zu berücksichtigen sind.

Diese HTTP Responses beinhalten dann alle möglichen Informationen wie z.B. die Zeichenkodierung, Hinweise über den Cache, Weiterleitungen und so weiter. Der Webserver kann dem Browser aber auch Anweisungen geben, was der Browser darf und was nicht. Hier spielt natürlich die Verschlüsselung eurer Website via https eine große Rolle (und wird ja mittlerweile auch von (fast) allen Browsern vorausgesetzt. Was viele jedoch nicht wissen ist, dass eine Website oft noch immer ohne https aufgerufen werden kann, weil die Website nicht korrekt konfiguriert ist.

Die einzelnen HTTP Security Header

Aktuell gibt es 6 Security Header, die ihr zwingend auf eurer Website einbinden solltet. Nachfolgend erkläre ich euch, was das für welche sind und worauf ihr achten müsst:

  • X-Content-Type-Options verhindert, dass ein Browser versucht, definierte MIME-Werte zu umgehen. Ein Beispiel könnte sein, dass jemand versucht, in einem Bild schädlichen JavaScript-Code zu implementieren. Der Security-Header verhindert das und zwingt ihn, sich Content-Type zu halten.
  • X-Frame-Options teilt dem Browser mit, ob eure Seite in eine andere Seite z.B. via iFrame eingebunden werden darf oder nicht. Stellt euch vor, dass jemand eure Seite in deren Seite einbindet und zwar als Vollbild. Die Seite sieht also aus wie eure Seite aber ist letztendlich eine andere Seite. Wenn jemand nun Benutzername und Passwort eingibt, dann landet kann das Ganze von dem eigentlichen Server mitgeschnitten werden. Mit dieser Option verhindert ihr diese Art von Angriffen.
  • Strict Transport Security sorgt dafür, dass eure Website nur und ausschließlich via HTTPS aufgerufen werden kann und darf. Ein Aufruf ohne HTTPS ist dann nicht mehr möglich bzw. zulässig.
  • Referrer Policy gibt euch die Möglichkeit selber zu bestimmen, wie viele Informationen eine nachfolgende Seite von euch erhält. Beispiel: Jemand kommt auf eure Seite und klickt einen externen Link. Die neue Website kann dann jede Menge Informationen darüber erfahren, wo der Nutzer vorher war und was das für eine Seite war. Dies kann man begrenzen bzw. einschränken.
  • Feature Policy kann Skripten u.a. den Zugriff auf Geräte des Browsers erlauben und verbieten. Meistens ist es nicht notwendig, dass eine Website die Kamera oder das Mikrofon einer Website aktivieren muss. Wenn der Security Header nicht aktiv ist, dann kann eingeschleuster Code dafür sorgen, dass z.B. das Mikrofon des Nutzers eingeschaltet wird. Die meisten Browser und Betriebssysteme haben mittlerweile einen eigenen Schutz dafür implementiert. Dennoch sollte diese Anweisung auf jeden Fall mit eingebunden werden.
  • Content Security Policy hilft euch dabei, eure Seite vor XSS-Angriffen zu schützen. Ein Beispiel wäre, dass jemand eure Website gehackt hat und Schadecode von einer anderen Domain nachlädt. Wenn jemand nun auf eure Seite kommt, kann die Content Security Policy dafür sorgen, dass nur Inhalte von eurer Seite an den Browser übermittelt werden und nicht Inhalte, die von einer vollkommen fremden Seite kommen.

Security Header: Eigene Seite testen

Jetzt ist es an der Zeit, eure eigene Seite mal zu testen und zu prüfen, ob ihr bereits HTTP Security Header vollständig einsetzt, einige Security Header fehlen oder ihr das Ganze noch gar nicht implementiert habt. Je nachdem, was bei euch herauskommt, kann das Ganze dann folgendermaßen aussehen:

Einbindung der Security Header

Die Einbindung von Security Headers setzt zwingend voraus, dass ihr schon https auf eurer Website aktiviert habt und dementsprechend über ein SSL-Zertifikat verfügt. Sonst funktioniert das Ganze nicht.

Danach muss das Ganze noch in die Website eingebunden werden. Auf meiner Website iseri.de habe ich zum Beispiel folgenden Code in meine .htaccess-Datei eingebunden:

# Security Headers

<IfModule mod_headers.c>

Header set Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”

Header set Referrer-Policy “same-origin”

Header set X-XSS-Protection “1; mode=block”

Header set x-frame-options “SAMEORIGIN”

Header set X-Content-Type-Options “nosniff”

Header set Feature-Policy “none”

Header set Content-Security-Policy “self”

</IfModule>

Grundsätzlich ist der Aufwand hierfür überschaubar. Im Idealfall ist das Ganze in rund einer halben bis einer Stunde erledigt. Voraussetzung hierfür ist, dass man weiß und entschieden hat, welche Werte man einbinden möchte. Der Zugriff auf den Server ist natürlich notwendig, ebenso die Recherche, wo das Script eingebunden werden muss. Dann kommt noch das Testing hinzu (ggf. habt ihr eine Staging-Plattform) und die Einspielung auf die Live-Umgebung. Solltet ihr WordPress einsetzen geht es wahrscheinlich schneller als wenn ihr ein exotisches Content Management System auf einem selbst aufgesetzten Server verwendet. Wie immer kommt es eben auf die Vorbedingungen an.

Sprecht einfach eure für die Website verantwortlichen Berater, Agenturen oder Programmierer an. Diese werden wissen, wie das Ganze eingebunden werden kann und ob jeder einzelne dieser Security Header für euch auch tatsächlich Sinn macht.

Testen

Habt ihr die entsprechenden Security Header gesetzt, könnt ihr diese dann testen. Idealerweise bekommt ihr ein A oder A+ Ranking und seid sicher. Testen könnt ihr das Ganze hier.

So sieht das Ganze dann aus, wenn ihr alles richtig gemacht habt:

Sie benötigen Unterstützung bei der Einbindung von HTTP Security Headers?

Sehr gerne unterstütze ich Sie dabei, Ihre Website sicherer zu machen. Sprechen Sie mich gerne an. Ich helfe Ihnen weiter.

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.