HTTP Strict Transport Security (HSTS) is een beveiligingsmaatregel die SSL-beveiligde websites beschermt tegen zogenoemde downgrade aanvallen. Door een HSTS-reactieheader mee te sturen zorg je ervoor dat webbrowsers alleen het beveiligde HTTPS protocol gebruiken en nooit het onveilige HTTP. In dit artikel lees je hoe je dit instelt voor jouw website.
Inhoudsopgave
Inleiding
HSTS omvat standaard de communicatie tussen de webserver en webbrowser. Dit is alleen mogelijk als de gehele website beveiligd is met SSL. Daarom wordt een HSTS reactieheader niet standaard teruggestuurd naar de browser.
Instellen
Als je de communicatie tussen jouw website en bezoekers beter wilt beschermen zorg je dat de reactieheader terug wordt gestuurd. Je stelt dit in een web.config bestand. In het artikel Striktere websitebeveiliging met HTTP-reactieheaders geven we je meer voorbeelden.
Web.config
Reactieheaders kun je instellen met een Outbound Rule in het web.config bestand. Een Outbound Rule herschrijft de reactie die van de server teruggestuurd wordt naar de browser. Dit in tegenstelling tot een gewone Rewrite Rule waarbij dat wat de bezoeker opvraagt (request) herschreven wordt.
In het web.config-bestand voeg je de volgende XML-code toe, onder bestaande rewrite rules:
<outboundRules> <rule name="Add Strict-Transport-Security when HTTPS" enabled="true"> <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" /> <conditions> <add input="{HTTPS}" pattern="on" ignoreCase="true" /> </conditions> <action type="Rewrite" value="max-age=31536000; includeSubDomains; preload" /> </rule> </outboundRules>
Als je al gebruikmaakt van IIS web.config URL Rewrite HTTPS-verbinding voor alle pagina's voor het herschrijven van URL's, dan moet deze code staan onder </rules> en boven </rewrite>.
Lees het bovenstaande artikel voor meer informatie over een HTTP naar HTTPS redirect voor jouw website. Als je nog geen gebruik maakt een URL Rewrite in web.config, dan moet dit de bovenstaande outboundRules verpakken in de juiste elementen. Neem in het web.config-bestand op (of kies de juiste onderdelen):
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <!-- redirect HTTP naar HTTPS --> <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> </rule> </rules> <outboundRules> <rule name="Add Strict-Transport-Security when HTTPS" enabled="true"> <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" /> <conditions> <add input="{HTTPS}" pattern="on" ignoreCase="true" /> </conditions> <action type="Rewrite" value="max-age=31536000; includeSubDomains; preload" /> </rule> </outboundRules> </rewrite> </system.webServer> </configuration>
Door hiervan gebruik te maken bied je jouw bezoekers net een beetje meer veiligheid en privacy, doordat downgrade attacks worden voorkomen.
Apache
Staat jouw website gehost op een Apache webserver? Dan kun je de volgende regel opnemen voor het terugsturen van een HTTP Strict Transport Security reactieheader:
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
WordPress
add_action( 'send_headers', 'vevida_add_hsts_header' ); function vevida_add_hsts_header() { header( 'Strict-Transport-Security: max-age=31536000; includeSubDomains; preload' ); }
Meer informatie
Wil je graag meer informatie over het HSTS protocol? Neem dan een kijkje op onderstaande links.
- RFC6797
- HTTP Strict Transport Security (Wikipedia)
- How to enable HTTP Strict-Transport-Security (HSTS) on IIS
En je vindt nog meer handige informatie over het aanbieden van HTTPS URL's in ons artikel SSL voor WordPress. Wist je bijvoorbeeld dat iedere bron die luistert op poort 80 (HTTP) moet redirecten naar dezelfde bron op poort 443 (HTTPS)?