Strict-Transport-Security Header richtig konfigurieren
Was macht der Strict-Transport-Security Header?
Mit dem Strict-Transport-Security Header wird der Browser darüber informiert, dass eine Seite nur über https und nicht über http aufgerufen werden soll. Zudem wird der Browser angewiesen, sich diese Einstellung zu merken und auch in Zukunft alle http Anfragen an diese Seite automatisch zu https abzuändern.
Die Webseite kann dadurch nicht mehr über das unsichere http Protokoll genutzt werden, sondern nur noch über https:
Was können die Auswirkungen eines nicht gesetzten Strict-Transport-Security Headers sein?
Wenn die Verwendung von https nicht erzwungen wird, kann ein User die Webseite über eine unsichere http Verbindung aufrufen. Für einen Angreifer sind in diesem Fall Man in the Middle Angriffe möglich, bei denen er sensible Daten des Users abgreifen kann, oder dem User eine manipulierte Webseite anzeigen kann:
Ist der Strict-Transport-Security Header dagegen gesetzt, wird die Seite automatisch über die sichere https Verbindung aufgerufen. Ein Angreifer, der diese Kommunikation belauscht, kann damit nichts anfangen, da die Login Information in diesem Fall verschlüsselt übermittelt werden:
Welche Werte gibt es für den Strict-Transport-Security Header?
Die folgenden Einstellungen können für den gesetzten Header vorgenommen werden:
- max-age
- Stellt die Anzahl an Sekunden dar, die der Browser die Einstellung „im Gedächtnis behalten“ soll
- includeSubDomains
- Gibt an, ob die Einstellung auch für Subdomains gelten soll
Auf welche Werte sollte der Strict-Transport-Security Headers gesetzt sein?
Der Parameter max-age sollte auf den größtmöglichen Wert gesetzt werden (2 Jahre), sodass die Einstellung im Browser möglichst lange gültig bleibt. Die Option includeSubdomains sollte gesetzt werden, da es in der Regel keinen Grund geben dürfte, eine Subdomain explizit über eine unsichere http Verbindung zu nutzen.