HSTS stało się popularne po tym, jak firma Google ogłosiła decyzję o dodaniu serwisów z tym mechanizmem do listy najlepszych domen internetowych, które jednocześnie są najwyżej pozycjonowane. Warto się im przyjrzeć, dlatego przygotowaliśmy dla Was kilka ważnych informacji.

Co to jest HSTS?

HTTP Strict Transport Security to polityka bezpieczeństwa sieci, która zmusza przeglądarki do korzystania z bezpiecznych połączeń HTTPS podczas odwiedzania stron internetowych. Chroni on strony przed wszelkimi atakami związanymi np. z przechwytywaniem sesji. Zapobiega też kradzieży plików cookie oraz atakom typu downgrade. Dzięki HSTS z serwerami można połączyć się tylko za pomocą przeglądarek korzystających z bezpiecznych połączeń, nie dopuszcza on tych opartych na niezabezpieczonych protokołach – mówi Michał Trziszka, CEO firmy Cal.pl.  Takie bezpieczeństwo można osiągnąć ustawiając parametr Strict-Transport-Security, który wymusza bezpieczne nawiązywanie wszystkich połączeń. Nagłówek HSTS określa przedział czasu, w którym ma być zastosowany parametr.

HSTS to protokół ścieżki standardowej IETF. W wyniku prac poszczególnych grup roboczych IETF (jest to nieformalne stowarzyszenie o charakterze międzynarodowym, zajmujące się ustanawianiem standardów technicznych dotyczących internetu) powstają dokumenty nazywane RFC (Request for Comments) opatrzone stosownym numerem. Definiują one bardzo wiele (jeśli nie wszystkie) z obowiązujących obecnie standardów, protokołów przesyłania i formatów danych. HSTS zostało zatwierdzone w RFC 6797 dokładnie 2 października 2012 roku.

Istnieje jedno zagrożenie bezpieczeństwa związane z systemem HSTS

Ponieważ parametr STS jest przekazywany w postaci nagłówka, w trakcie pierwszego połączenia jest niewielkie pole do ataku – zanim przeglądarka wyświetli nagłówek. Jest to raczej niskie ryzyko, ale dobry haker przy pomocy odpowiednich narzędzi może złamać szyfrowanie SSL i wykraść dane. Aby jednak zmniejszyć także to ryzyko powstało rozwiązanie w postaci listy HSTS preload.

Czym jest lista HSTS preload ?

Lista HSTS preload jest zestawieniem witryn stosujących HSTS. Efektywnie zamyka pole niebezpieczeństwa podczas pierwszego połączenia z protokołem downgrade (czyli aktualizacją wsteczną) lub podczas próby przejęcia kontroli nad plikami cookie’s. W momencie kiedy przeglądarka internetowa dociera do strony korzystającej z listy HSTS preload po raz pierwszy, od razu wie, że ma zabezpieczyć połączenia.

Jedyny problem, jaki pojawia się w tym kontekście to dość długi czas oczekiwania na dodanie witryny do listy HSTS preload. W zależności od przeglądarki, czasami trwa to tydzień, a innym razem miesiąc. To dlatego decyzja Google o rejestracji wszystkich na liście TLD (Top-Level Domain – Domena najwyższego poziomu) jest tak potężna. Teraz każda, która zabezpieczona jest certyfikatem SSL, znajduje się domyślnie na liście.

Czy powinienem wdrożyć HSTS w mojej witrynie?

Odpowiedź brzmi: tak. Zdecydowanie polecamy zainstalowanie HSTS. Przy użyciu certyfikatu SSL nadal istnieją sposoby na wykorzystanie witryny. Dla doświadczonych hakerów nie jest czymś trudnym złamanie takiej zapory. Jeśli nie masz HSTS to trochę tak, jakbyś wywiesił na drzwiach domu parterowego kłódkę, a przy okazji zostawił otwarte okna. Sposób na wejście istnieje, po prostu wymaga od kogoś więcej uwagi i sprytu.

Zalecamy więc wdrożenie HSTS. Nie tylko HSTS, ale także nagłówka wraz z podpowiedziami „includeSubDomains” i „preload”.

Oto przykład dobrego nagłówka HSTS:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Co należy rozważyć przed wdrożeniem HSTS

Warto zwrócić uwagę na kilka rzeczy przed dodaniem nagłówka HSTS:

W swojej witrynie musisz mieć zainstalowany certyfikat SSL

Jeśli masz poddomeny, musisz użyć symbolu wieloznacznego, aby je chronić

Musisz użyć przekierowania 301 aby zmienić wszystkie strony HTTP na HTTPS

Google twierdzi, że najlepiej ustawić dwa nagłówki na maksymalnie dwa lata

Należy dołączyć nagłówki SubDomain i preload

Ważna uwaga: dodanie „preload” nie sprawi, że od razu dostaniesz się na listę HSTS preload. Nadal będziesz musiał śledzić się ją tutaj: https://hstspreload.org/

Nagłówek HSTS dla serwerów usług IIS

protected void Application_BeginRequest(Object sender, EventArgs e) { switch (Request.Url.Scheme) { case „https”: Response.AddHeader(„Strict-Transport-Security”, „max-age=31536000; includeSubDomains; preload”); break; case „http”: var path = „https://” + Request.Url.Host + Request.Url.PathAndQuery; Response.Status = „301 Moved Permanently”; Response.AddHeader(„Location”, path); break; } }

Nagłówek HSTS dla Nginx

add_header Strict-Transport-Security ‚max-age=300; includeSubDomains; preload; always;’

Nagłówek HSTS dla lighttpd

server.modules += ( „mod_setenv” ) $HTTP[„scheme”] == „https” { setenv.add-response-header = („Strict-Transport-Security” => „max-age=300; includeSubDomains; preload”) }

Nagłówek HSTS dla serwera WWW Apache

# Use HTTP Strict Transport Security to force client to use secure connections only Header always set Strict-Transport-Security „max-age=300; includeSubDomains; preload”

Jak się zarejestrować na listę pobierania wstępnego HSTS

Aby przesłać swoją witrynę do wstępnej listy HSTS, musisz najpierw spełnić oficjalne wymagania:

Podawaj tylko poprawne certyfikaty

Przeadresuj połączenia z HTTP na HTTPS, używając tego samego hosta, jeśli jesteś na porcie 80.

Obsługuje wszystkie subdomeny przez HTTPS

W szczególności musisz utrzymywać HTTPS dla subdomen jeśli DNS (system nazw domenowych) dla tych subdomen istnieje

podawaj nagłówek HSTS w bazie domen na żądanie HTTPS

maksymalny wiek musi wynosić co najmniej 18 tygodni

wytyczna includeSubDomain musi być sprecyzowana

wytyczna preload musi być sprecyzowana

jeśli podajesz dodatkowo przekierowanie ze swojej strony HTTPS, to przekierowanie dalej musi mieć nagłówek HSTS

Jeśli spełniasz te wymagania, po prostu napisz tutaj: https://hstspreload.org/ i wypełnij formularz, aby przesłać swoją witrynę do listy wstępnych ładowań HSTS.