HSTS: Czym jest, jak działa i jak wdrożyć HTTP Strict Transport Security?

Co to jest HSTS? Jak działa? Przed czym chroni? Jak włączyć HTTP Strict Transport Security na swojej stronie i jak sprawdzić czy działa poprawnie?

Standardem w sieci stało się już korzystanie z protokołu HTTPS, chociaż w dalszym ciągu możesz również trafić na serwisy, przy których przeglądarka wyświetli informację o niezabezpieczonym połączeniu. Problem tkwi jednak w tym, że protokół ten nie jest włączony domyślnie, tzn. połączenie osoby przeglądającej Twoją stronę może być przejęte, zanim poinformujesz o konieczności korzystania z HTTPS. Sposobem na rozwiązanie tego problemu jest HSTS. Co to oznacza? 

🏆️ Zobacz ranking hostingów (Październik 2021)

HSTS – co to jest i jak działa?

HSTS (HTTP Strict Transport Security) to mechanizm chroniący strony WWW przed atakami poprzez wymuszenie używania szyfrowanego protokołu HTTPS.

Rozwiązanie to informuje przeglądarkę internetową, w jaki sposób powinna się łączyć z Twoją witryną. Nawet jeśli użytkownik strony będzie próbował ją uruchomić po kliknięciu linka, w którym użyto adresu z HTTP, to i tak zostanie ona automatycznie załadowana za pomocą protokołu HTTPS (czyli z wykorzystaniem certyfikatu SSL). Dzięki HSTS wyszukiwarka Google proponuje w wynikach wyszukiwania bezpieczne adresy URL, a to także ogranicza ryzyko wyświetlenia internautom niezabezpieczonych treści. Co więcej, Google rekomenduje webmasterom stosowanie mechanizmu HSTS.

Rekomendacja Google w zakresie HSTS
Rekomendacja Google w zakresie HSTS

Standardowo wejście internauty z daną stronę wygląda tak, że w przypadku podjęcia takiej próby wysyłane jest do serwera żądanie połączenia. Wtedy serwer ten wysyła odpowiedź, że dany adres musi być przekierowany do HTTPS. Możliwy jest jednak taki atak, w którym odpowiedź ta zostanie zablokowana, a atakujący będzie w stanie kontrolować przeglądanie strony przez danego użytkownika, co jest niebezpieczne. W przypadku zastosowania HSTS serwer wyśle również nagłówek informujący przeglądarkę, że wszystkie URL-e na stronie zostaną przekierowane do HTTPS. Efekt? W każdym przypadku użytkownik sieci korzystać będzie z szyfrowanej, bezpiecznej wersji witryny. Mechanizm działania tego rozwiązania obrazuje poniższy screen:

HTTP Strict Transport Security (HSTS) - zasada działania
HTTP Strict Transport Security (HSTS) – zasada działania – aboutssl.org

Uwaga: HSTS gwarantuje, że użytkownicy będą się łączyć z szyfrowaną wersją Twojego serwisu, ale nie przy pierwszej wizycie, lecz w kolejnych.  

Jak włączyć protokół HSTS?

Aby w ogóle mieć możliwość włączenia tej funkcji, potrzebujesz serwera, który ją obsługuje. Zacznij od opublikowania strony z HTTPS, ale bez HSTS. 

HSTS natomiast pozwala zabezpieczyć się przed następującymi atakami:

  • MITM – czyli Man in the Middle. W tym ataku wykorzystywane są luki w oprogramowaniu, a jego celem jest przejęcie połączenia użytkownika. 
  • Downgrade – często stanowi on część ataku MITM i w jego ramach tworzona jest ścieżka umożliwiająca przeprowadzenie ataku kryptograficznego.

HSTS zabezpiecza również przed wysyłaniem plików cookies i identyfikatorów sesji niezabezpieczonym kanałem. W skrócie: minimalizujesz za jego pomocą ryzyko wielu zagrożeń dla użytkowników serwisu. Przejdźmy zatem do tego, jak włączyć to rozwiązanie – o ile oczywiście Twój hosting daje Ci taką możliwość. 

W pierwszym kroku musisz poprawnie skonfigurować nagłówki, a do tego możesz wykorzystać plik .htaccess. Dodaj w nim następujący kod:

Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS

Max-age oznacza czas w sekundach, przez który przeglądarka będzie przekierowywać do Twojego serwisu na https://. Dlaczego akurat 31536000? Tyle sekund trwa rok.  

W przypadku serwera Nginx zalecany jest taki nagłówek:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Dzięki „includeSubDomains”szyfrowaniem obejmujesz także subdomeny, a „preload” to element niezbędny do tego, aby witryna znalazła się na liście hstspreload, co zwiększy wiarygodność serwisu. Wejdź zatem na stronę: https://hstspreload.org/ i wprowadź adres witryny, który ma trafić na tę listę. Jeśli nie zrobiłeś tego, co trzeba, wówczas wyświetli się błąd wraz z informacją, czego nie wdrożyłeś. 

onet.pl - brak strony na liście HSTS, nagłówek nie został wdrożony
onet.pl – brak strony na liście HSTS, nagłówek nie został wdrożony

Jeśli witryna znajduje się już na liście, to wtedy pojawi się następująca informacja:

Wdrożony nagłówek HSTS - strona na liście
Wdrożony nagłówek HSTS – strona na liście

W przypadku gdy witryna nie jest na liście, a może być dodana, to wtedy pokaże się stosowny komunikat. Musisz zaakceptować dwa wyświetlone punkty, a następnie przesłać zgłoszenie. Twoja strona nie pojawi się na tej liście automatycznie – czas oczekiwania wynosi nawet kilka tygodni. 

Pozytywna informacja jest taka, że większość popularnych przeglądarek ma listy HSTS prowadzone na podstawie tej od Chrome, budowanej m.in. w ramach zgłoszeń pod wspomnianym adresem. 

HSTS – czy warto?

Wdrażając HSTS, zwiększasz bezpieczeństwo użytkowników swojej strony, tak więc nie zastanawiaj się, czy warto wprowadzić to rozwiązanie, o ile oczywiście Twój serwer daje taką możliwość. Aktualnie HSTS nie jest bardzo popularne, co nie zmienia faktu, że dobrze jest z niego korzystać.