Jak BBC wdraża mechanizm HSTS w celu zwiększenia bezpieczeństwa i skuteczności

Aby poprawić bezpieczeństwo i wydajność swojej strony, BBC wdraża mechanizm HSTS. Dowiedz się, co to oznacza i jak HSTS może Ci pomóc.

W ostatnich latach coraz częściej korzystamy z protokołu HTTPS. Jak wynika z opracowania przez archiwum HTTP z 2021 r., około 91% wszystkich żądań zarówno z komputerów, jak i urządzeń mobilnych, pochodziło z protokołu HTTPS. Protokół HTTPS nie tylko służy do budowania, ale jest niezbędny do korzystania z takich funkcji jak Service Worker i nowoczesne protokoły, takie jak HTTP/2 i HTTP/3.

Niedawno Neil Craig, główny architekt techniczny w BBC, napisał na Twitterze, że standard HTTP Strict Transport Security (HSTS) wdrażamy dla witryny bbc.com. Zobaczmy, co to oznacza dla BBC i co to oznacza dla Ciebie.

Problem

Serwery WWW często nasłuchują żądań na portach 80 i 443. Port 80 służy do obsługi niezabezpieczonych żądań HTTP, a 443 – do obsługi bezpiecznych żądań HTTPS. Może to powodować problem, ponieważ po wpisaniu adresu w pasku adresu bez prefiksu protokołu https:// – jak ma to miejsce w przypadku większości użytkowników – niektóre przeglądarki będą kierować ruch do niezabezpieczonych wersji HTTP witryny z powodów związanych ze starszymi przyczynami (choć nie zawsze tak jest).

Typowym sposobem na to, aby użytkownicy nie mieli dostępu do niezabezpieczonej wersji witryny, jest stosowanie dla wszystkich żądań przekierowania HTTP-to-HTTPS. To oczywiście działa, ale uruchamia następujący łańcuch zdarzeń:

  1. Serwer otrzymuje żądanie przez HTTP.
  2. Serwer wykonuje przekierowanie, aby przejść do odpowiednika HTTPS żądanego zasobu.
  3. Serwer przy użyciu protokołu HTTPS musi wynegocjować bezpieczne połączenie z przeglądarką.
  4. Treść wczyta się w zwykły sposób.

Mimo że przekierowania działają poprawnie, mogą być nieprawidłowo skonfigurowane w sposób umożliwiający dostęp do niezabezpieczonej wersji witryny. Nawet jeśli wszystko jest skonfigurowane prawidłowo, w dalszym ciągu występuje problem z bezpieczeństwem. W tym czasie użytkownik nadal będzie się łączyć przez niezabezpieczone połączenia HTTP w fazie przekierowania, co naraża ich na niebezpieczne ataki typu „man in the middle”.

Wpisz HSTS

Obsługa przeglądarek

  • 4
  • 12
  • 4
  • 7

Źródło

Działanie funkcji HSTS jest podyktowane nagłówkiem odpowiedzi HTTP Strict-Transport-Security w przypadku żądań HTTPS. Po jego ustawieniu ponowne wizyty w witrynie będą wywoływać specjalne przekierowanie 307, które jest nazywane „wewnętrznym przekierowaniem 307”, które odpowiada za logikę przekierowania, a nie przez serwer. Zapobiega to przechwyceniu żądania, ponieważ żądanie nigdy nie opuszcza przeglądarki, więc jest bezpieczniejsze. Dodatkową zaletą takich przekierowań jest to, że są bardzo szybkie i eliminują widoczne opóźnienia w przeskokach z HTTP do HTTPS.

Wewnętrzne przekierowanie 307 z HTTP do HTTPS aktywowane przez nagłówek HSTS. Przekierowanie 307 trwa tylko 2 milisekundy.

Podobnie jak w składni dyrektywy max-age Cache-Control, nagłówek HSTS określa dyrektywę max-age. Ta dyrektywa przyjmuje wartość w sekundach, która określa, jak długo zasada obowiązuje w przypadku:

Strict-Transport-Security: max-age=3600

W powyższym przykładzie zasada powinna obowiązywać tylko przez godzinę.

Wdrażanie mechanizmu HSTS

Główną wadą wdrożenia HSTS jest brak możliwości traktowania źródła w sposób ściśle bezpieczny. Załóżmy, że masz wiele subdomen, z których udostępniasz zasoby, ale nie wszystkie są bezpieczne. W takiej sytuacji nagłówek HSTS może nie działać w przypadku Twojej witryny.

BBC przyjęła właściwe podejście do wdrożenia HSTS. Jak wspomniał Neil Craig w swoim tweetie, początkowa wartość dla bbc.com wynosiła max-age=10.

Takie podejście oznacza, że początkowo zasada była stosowana tylko przez 10 sekund. Nie przynosi to zbyt wielu korzyści, ale warto sprawdzić, czy w ogóle nie wystąpią problemy z zastosowaniem HSTS. Z czasem możesz stopniowo zwiększać poziom zasady i sprawdzać, czy wystąpią problemy. W momencie tworzenia tego tekstu w witrynie bbc.com określono zasadę HSTS dla parametru max-age=86400 i z czasem będzie ona prawdopodobnie coraz większa.

Przy wdrażaniu HSTS z pewnością nie chcesz wychodzić z domu z długą wartością max-age. Może się okazać, że nagle masz problemy z rozwiązywaniem problemów u użytkowników. Zacznij od małych kwot i z czasem zwiększaj zyski. Jeśli masz pewność, że wszystko jest w porządku, możesz ustawić znacznie dłuższy okres dyrektywy max-age. Po pełnym wdrożeniu zaleca się ustawienie wartości max-age na 1 lub 2 lata.

Szybsza i bezpieczniejsza pierwsza nawigacja dzięki liście wczytywania HSTS

Zasada HSTS wchodzi w życie dopiero po pierwszej wizycie na stronie, więc korzyści nie są przewidziane przy pierwszej wizycie. Przekierowanie nadal będzie wymagało niezabezpieczonego przekierowania. Możesz jednak wstępnie wczytać zasady HSTS, przesyłając witrynę do listy wstępnego ładowania HSTS. Jest to zakodowana na stałe lista witryn, które według przeglądarki korzystają wyłącznie z protokołu HTTPS. Jeśli Twoja witryna znajduje się na liście wstępnego wczytywania, pierwsza wizyta jest również chroniona, a opóźnienie przekierowania HTTP do HTTPS przez HSTS jest natychmiastowe.

Zobacz, jak to działa

Jeśli BBC chce przetestować HSTS, istnieje duża szansa, że można to zrobić w przypadku swojej witryny. Wypróbuj ją w swojej witrynie. Jeśli chcesz ją poprawić, dodaj ją do listy ładowania mechanizmu HSTS, gdy będziesz mieć pewność, że nie ma błędów, które mogłyby zapewnić użytkownikom bezpieczniejsze i szybsze działanie.