Auch wenn Webseiten über eine sichere Verbindung abgerufen werden können, gibt es dennoch Möglichkeiten unachtsamen Besuchern Code unterzuschieben. Beispielsweise wird im Browser in der Regel eine URL eingetragen, wobei der Besucher davon ausgeht, dass er auf die via SSL verschlüsselte Version weitergeleitet wird. In diesem Vorgang werden allerdings Daten unverschlüsselt übertragen und können manipuliert werden. Details dazu finden sich in einem kürzlich veröffentlichten Artikel zum Thema HSTS auf www.heise.de.

Gegen diese Lücke richtet sich RFC 6797, welches die "HTTP-Strict Transport Security" (HSTS) beschreibt. Hierbei geht es darum, dass ein Webserver bekannt gibt, dass auf diese Domain nur via SSL zugegriffen werden darf/soll. Sofern der Browser dieses Verfahren unterstützt leitet dieser direkt auf die SSL-Version weiter, ohne erst eine unverschlüsselte Anfrage zu schicken. Somit ist es schwieriger die Anfrage zu manipulieren.

HSTS in nginx zu aktivieren ist sehr einfach. Hierzu tragen wir einfach folgende Zeilen in den Server-Abschnitt des SSL-vHosts ein, wobei der max-age-Zusatz in Sekunden angibt, wie lange diese Regel im Client gespeichert wird (31536000 = 1 Jahr in Sekunden):

add_header Strict-Transport-Security max-age=31536000;

Und wenn wir schon beim Absichern sind, fügen wir noch gleich eine Framing-Prevention ein. Hierbei wird verhindert, dass die URL in einen Frame eingebettet werden kann, was ein oft genutztes Mittel für Phishing ist.

add_header X-Frame-Options DENY;

Nach einem Neustart von nginx werden diese Header-Ergänzungen mit ausgeliefert.