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?
Spis treściStandardem 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?
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 zwykłego lub Wildcard 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.
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 HTTP 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:
Uwaga: HSTS gwarantuje, że użytkownicy będą się łączyć z szyfrowaną wersją Twojego serwisu, ale nie przy pierwszej wizycie, lecz w kolejnych. A jeśli certyfikat SSL nie będzie poprawny, zobaczą komunikat „Połączenie nie jest prywatne” (w Chrome) lub „Połączenie nie jest bezpieczne” (w Firefox).
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ś.
Jeśli witryna znajduje się już na liście, to wtedy pojawi się następująca informacja:
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ć.