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.

HSTS niet standaard ingeschakeld

De HTTP Strict-Transport-Security (HSTS) standaard omvat communicatie tussen de webserver en webbrowser, en is alleen mogelijk als de gehele website beveiligd is met een SSL-certificaat. Hierom wordt een HSTS-reactieheader niet standaard teruggestuurd naar de browser (client).

Als je graag de communicatie tussen jouw website en bezoekers beter wilt beschermen, en de privacy van jouw bezoekers belangrijk vindt, dan doe je er verstandig aan deze HSTS-reactieheader terug te sturen. Je stelt dit eenvoudig in een web.config-bestand in.

HTTP Strict-Transport-Security (HSTS) reactieheader in web.config

HTTP-reactieheaders kun je onder andere instellen door middel van 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>.

Zie dit genoemde artikel HTTPS-verbinding voor alle pagina’s 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>
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
          </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.

HSTS in Apache .htaccess

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"

HSTS in WordPress

Voor WordPress kun je een HTTP Strict-Transport-Security (HSTS) header terugsturen door middel van een stukje PHP-code in jouw thema functions.php bestand.

Neem in dit bestand de volgende functie op:

add_action( 'send_headers', 'vevida_add_hsts_header' );
function vevida_add_hsts_header() {
	header( 'Strict-Transport-Security: max-age=31536000; includeSubDomains; preload' );
}

Meer informatie over HTTP Strict-Transport-Security (HSTS)

Wil je graag meer informatie over het HTTP Strict-Transport-Security (HSTS) protocol? Neem dan een kijkje op onderstaande links (sommige artikelen kunnen droog en technisch zijn):

En je vindt nóg 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)?

Wat vond je van dit antwoord?

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.