HSTS (kurz für "HTTP Strict Transport Security") ist ein wirksames und ein einfach einzurichtendes Sicherheitsmerkmal für alle Webseiten. Zum richtigen Einsatz des HSTS- Headers gibt es immer wieder unterschiedliche Meinungen und Aussagen. An dieser Stelle haben wir die korrekte Anwendung und deren Hintergründe kurz zusammengefasst:
Konfiguration
- Der HSTS- Header wird ausschließlich beim Aufruf der URL per https:// ausgeliefert. Die verbreitete Annahme, dass der HSTS- Header auch beim Aufruf über http:// ausgeliefert wird, ist nicht korrekt.
- Ist die Seite generell per http:// erreichbar, müssen alle Anfragen mittels "301 Moved Permanently" von http:// nach https:// auf derselben URL umgeleitet werden.
- Wenn man sicherstellen kann, dass wirklich alle URLs einer Domain per https:// erreichbar sind, sollte die Domain auch in die Preload- Liste der Browser eingetragen werden. Damit wird das potentielle Risiko eine MITM- Angriffs beim ersten Aufruf der Seite über http:// verhindert, da der Browser bereits vor dem ersten Aufruf der URL Kenntniss davon hat, dass die Seit nur per https:// ereichbar sein soll.
Ein korrekter HSTS- Header sieht z. Bsp. für https://www.managedhosting.de folgendermassen aus:
Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Weiterführende Informationen
Werkzeuge & Tests
Mittels eines einfachen Aufrufs der Seite mit CURL kann man sich den HSTS- Header leicht anzeigen lassen:
curl --head http://www.managedhosting.de
HTTP/1.1 301 Moved Permanently Date: Mon, 10 Jun 2019 08:41:06 GMT Server: Apache Location: https://www.managedhosting.de/ Cache-Control: max-age=0 Expires: Mon, 10 Jun 2019 08:41:06 GMT Content-Type: text/html; charset=iso-8859-1
curl --head https://www.managedhosting.de
HTTP/1.1 200 OK Date: Mon, 10 Jun 2019 08:43:59 GMT Server: Apache X-Frame-Options: SAMEORIGIN Strict-Transport-Security: max-age=63072000; includeSubDomains; preload Vary: Host,Accept-Encoding Cache-Control: public, max-age=86400 Expires: Tue, 11 Jun 2019 07:38:15 GMT Last-Modified: Mon, 10 Jun 2019 07:38:15 GMT ETag: "75b069c448aac62a356b517e702afb86292e2041" X-DNS-Prefetch-Control: on X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Content-Type: text/html; charset=UTF-8
|