Was sind Security Header?

Security Header

Und wie kann ich sie nutzen?

Mehr Sicherheit für Deine Webseite! Webseiten-Betreiber betreiben einen großen Aufwand, um das eigene Internetangebot zu schützen. Ein hohes Sicherheitsniveau wird mit einer durchdachten Architektur und regelmäßigen Pentests erreicht. Mit diesen Maßnahmen konzentrierst Du Dich in der Regel aber nur auf die Server-Seite und die Kommunikation. Am anderen Ende, also der Client-Seite, muss der Benutzer in der Regel selbst für seine Sicherheit sorgen. Möchte man die Benutzer seines eigenen Internetangebots trotzdem schützen, kommen die sogenannten Security Header ins Spiel.

Was sind Security-Header?

Wird im Browser eine Seite von einem Webserver angefordert, wird der Server jedes Mal mit der Auslieferung der Seite antworten und sendet mit dem Inhalt einen HTTP-Response-Header. Diese Header beinhalten in der Regel Metadaten wie Zeichensätze, Cache-Steuerung und Fehlercodes. Mit den Response-Headern kann man aber auch sicherheitsrelevante Einstellungen senden, welche dem Browser sagen, wie er sich zu verhalten hat. Ein Strict-Transport-Security-Header könnte dem Browser beispielsweise die Anweisung erteilen, nur über HTTPS zu kommunizieren. Es existieren insgesamt sechs verschiedene HTTP Security-Header (dazu später mehr).

Wo werden Security Header verwendet und wie funktionieren sie?

Was genau haben diese Header jetzt mit Sicherheitsfunktionen zu tun? Der moderne Webbrowser ist mit einer Vielzahl von Funktionen ausgestattet, um den Nutzer vor bösartigen Angriffen zu schützen. Einzelne Sicherheitsfunktionen werden schon bei der Erstellung des zugehörigen Webstandards berücksichtigt (beispielsweise die Same-Origin-Policy), dagegen werden andere Schutzfunktionen erst definiert, nachdem aus bisher legitimen Webfunktionen ernst zunehmende Angriffsvektoren entstehen. Eine grundsätzliche praktische Sache sind da beispielsweise iFrames, da sie die gegenseitige Einbettung von Webseiten erlauben. Aber dann wurde leider das sogenannte Clickjacking erfunden. Dieses lässt den Nutzer glauben mit einer anderen Website zu agieren. Die Seite ist dann über ein IFrame in die angreifende Seite eingebettet. Dabei werden Mausklicks oder Tastatureingaben (z.B. beim Online-Banking) in Wahrheit in die Eingabefelder der angreifenden Seite eingegeben. Diese Eingabefelder liegen dann nämlich transparent über der eingebetteten Seite. Hier sind nun die Browser-Hersteller extrem gefordert. Einerseits wollen sie Nutzer vor Clickjacking schützen, andrerseits wissen sie aber nicht, ob ein iFrame legitim oder bösartig ist? Bei bestehenden Webseiten verursacht also eine nachträglich eingeführte Sicherheitstechnik Probleme. Deshalb aktivieren Browserhersteller solche Schutzfunktionen in der Regel nicht standardmäßig. Sie überlassen die Entscheidung dem Nutzer oder der Webseite. Genau hier kommen dann die Security-Header ins Spiel! Sie erlauben nämlich einem Webseitenbetreiber die Aktivierung zusätzlicher Sicherheitsfeatures. Das aber nur, wenn die betreffende Seite auch damit kompatibel ist. Auf diese Weise werden also die sonst im Hintergrund schlummernden Wachhunde im Browser aktiv. In bestimmten Angriffsszenarien bringt das erhebliche Sicherheitsgewinne mit sich.

Security Header in der Praxis

Der X-Frame-Options Header

Der X-Frame-Options Header bewahrt Deine Website davor, in einem Frame ausgeführt zu werden. So können professionelle Content-Diebe die Inhalte nicht von anderen Websites holen. Diese Inhalte werden dann zumeist in einem Frame ausgeführt. Die Website des Content-Diebes sieht danach so aus, als ob die Inhalte von Deiner Seite stammen würden. Der X-Frame-Options Header verhindert diese Praxis sehr effektiv, indem er die Ausführung eines Frames verhindert.
Support folgender Browser: IE 8+, Chrome 4.1+, Firefox 3.6.9+, Opera 10.5+, Safari 4+.

Der X-XSS-Protection Header

Der X-XSS-Protection Header spricht die Cross-Site-Scripting (XSS) Schutzfilter in den modernen Browsern an und aktiviert sie. Obwohl der Filter grundsätzlich schon aktiviert sein sollte, wird mit diesem Header die Nutzung aber erzwungen. Deshalb sollte er auch genutzt werden.
Es stehen drei verschiedene Einstellungsmöglichkeiten zur Verfügung:
0 = Filter wird deaktiviert, 1 = zum Aktivieren, wenn der Browser die schadhafte Seite anzeigen will, 1; mode=block die schadhafte Seite wird geblockt.
Support folgender Browser: Internet Explorer 8+, Chrome und Safari

Der X-Content-Type-Options Header

Schützt vor Angriffen mit falschen MIME-Typen. Wird der MIME-Typ als nicht korrekt erkannt, wird das Laden von Styles und Scripten abgelehnt. In diesem Header gibt es nur die Einstellung NOSNIFF. Wenn der Header gesetzt ist, lädt der Browser nur Styles und Scripte mit korrektem MIME-Typ. Folgende MIME-Typen werden als korrekt anerkannt:

  • Styles: text/css
  • Scripte: application/ecmascript, application/javascript, application/x-javascript, text/ecmascript, text/javascript, text/jscript,
    text/x-javascript, text/vbs, text/vbscript.

Support folgender Browser: Internet Explorer und Google Chrome

Der Strict-Transport-Security-Header (nur für HTTPS-Websites)

Der Strict-Transport-Security-Header lässt nur eine sichere HTTPS-Verbindung zu. Also kann keine unsichere, potenziell angreifbare Verbindung hergestellt werden. Der HTTP-Response-Header verhindert auch den Zugriff auf eine Seite, wenn das TLS-Zertifikat des Servers nicht vertrauenswürdig ist.
Einstellungsmöglichkeiten:
max-age = Gibt die Anzahl der Sekunden an, innerhalb dieser der Browser die sichere Verbindung erzwingen soll.
includeSubDomains = Die sichere Verbindung muss auch für Subdomains erzwungen werden.
Support folgender Browser: IE 11+, Chrome 4+, Firefox 4+, Opera 12+, Safari 7+.

Rückmeldungen