Na czasieCo to jest HTTP Strict Transport Security (HSTS)? > redakcja Opublikowane 10 listopada 20170 0 125 Podziel się Facebook Podziel się Twitter Podziel się Google+ Podziel się Reddit Podziel się Pinterest Podziel się Linkedin Podziel się Tumblr 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 HSTSPonieważ 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; preloadCo należy rozważyć przed wdrożeniem HSTSWarto zwrócić uwagę na kilka rzeczy przed dodaniem nagłówka HSTS:W swojej witrynie musisz mieć zainstalowany certyfikat SSLJeśli masz poddomeny, musisz użyć symbolu wieloznacznego, aby je chronićMusisz użyć przekierowania 301 aby zmienić wszystkie strony HTTP na HTTPSGoogle twierdzi, że najlepiej ustawić dwa nagłówki na maksymalnie dwa lataNależy dołączyć nagłówki SubDomain i preloadWaż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 IISprotected 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 Nginxadd_header Strict-Transport-Security ‚max-age=300; includeSubDomains; preload; always;’Nagłówek HSTS dla lighttpdserver.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 HSTSAby przesłać swoją witrynę do wstępnej listy HSTS, musisz najpierw spełnić oficjalne wymagania:Podawaj tylko poprawne certyfikatyPrzeadresuj połączenia z HTTP na HTTPS, używając tego samego hosta, jeśli jesteś na porcie 80.Obsługuje wszystkie subdomeny przez HTTPSW szczególności musisz utrzymywać HTTPS dla subdomen jeśli DNS (system nazw domenowych) dla tych subdomen istniejepodawaj nagłówek HSTS w bazie domen na żądanie HTTPSmaksymalny wiek musi wynosić co najmniej 18 tygodniwytyczna includeSubDomain musi być sprecyzowanawytyczna preload musi być sprecyzowanajeśli podajesz dodatkowo przekierowanie ze swojej strony HTTPS, to przekierowanie dalej musi mieć nagłówek HSTSJeś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.