Konfigurace HSTS a automatický redirect na HTTPS v IIS

HTTP Strict Transport Security (HSTS) je vlastnost webové stránky sdělit prohlížeči, že má se serverem komunikovat pouze přes zabezpečený protokol HTTPS a nikdy pomocí nezabezpečeného HTTP. Tímto nastavením je řešena zejména situace, kdy je uživatel přesměrováván z protokolu HTTP na zabezpečený HTTPS a právě v tomto okamžiku může být útočníkem přesměrován na stránku s podvrženýnm obsahem. HSTS je realizována HTTP záhlavím, které prohlížeči říká, že má používat pouze HTTPS a jak dlouho. Společně s HSTS je tedy nutné nastavit také přesměrování HTTP požadavku na HTTPS.

Konfiguraci je možné provést úpravou souboru web.config. Na IIS v. 7+ je nutné mít nainstalovaný modul URL Rewrite a do souboru web.config dopsat příslušnou část níže uvedené konfigurace. Tato konfigurace zajistí jak odesílání potřebných HTTP záhlaví, tak přesměrování HTTP požadavků na HTTPS.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
     <system.webServer>
          <rewrite>
              <rules>
                  <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}"
                          redirectType="Permanent" />
                  </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=63072000; includeSubDomains; preload" />
                  </rule>
              </outboundRules>
          </rewrite>
     </system.webServer>
</configuration>