Wszystkie artykuły

Praktyczne przewodniki

5 min czytania

Nagłówki bezpieczeństwa HTTP: CSP i HSTS

Prosty przewodnik po CSP, HSTS, X-Frame-Options i Referrer-Policy w języku angielskim - co robi każdy nagłówek i jak sprawdzić witrynę za pomocą szybkiego skanowania.

Przez Luca Deguin

Okno przeglądarki z zamkiem połączonym z nagłówkami odpowiedzi i tarczą.

Wdrożyłeś aplikację. Strony ładują się, formularze działają i nic nie wygląda na uszkodzone. Następnie uruchamiasz skanowanie, które wyświetla listę ustaleń na temat nagłówki - i nic z tego nie jest oczywiste.

To normalna pierwsza reakcja. Nagłówki nie pojawiają się na ekranie, więc trudno stwierdzić, czy mają znaczenie, czy też skaner jest po prostu wybredny. W tym przewodniku omówiono najczęściej spotykane nagłówki, wyjaśniono, co każdy z nich faktycznie robi, prostym językiem i jak sprawdzić nagłówki bez zgadywania.

Dlaczego nagłówki mają znaczenie, nawet jeśli Twoja witryna wygląda dobrze

Nagłówki zabezpieczeń to instrukcje wysyłane przez serwer do przeglądarki wraz ze stroną. Przeglądarka je odczytuje i dostosowuje sposób obsługi treści: jakie skrypty mogą być uruchamiane, czy strona może być ładowana przez zwykły HTTP, czy inna witryna może osadzić ją w ramce.

Nic na stronie się nie zmienia. Właśnie dlatego te ustalenia wydają się abstrakcyjne - witryna może wyglądać i zachowywać się doskonale, pozbawiona zestawu zabezpieczeń, które miałyby znaczenie w przypadku, gdyby coś poszło nie tak.

Uczciwe sformułowanie jest następujące: nagłówki zmniejszają określoną klasę ryzyka. Same w sobie nie zapewniają bezpieczeństwa witryny, a sprawdzenie czystego nagłówka nie dowodzi, że witryna jest w pełni bezpieczna. Pomyśl o nich jak o jednej warstwie spośród kilku i jednej z najtańszych warstw, jakie można uzyskać.

Czym właściwie jest nagłówek bezpieczeństwa

Gdy przeglądarka żąda strony, serwer odpowiada, wysyłając stronę i blok metadanych zwany nagłówkami odpowiedzi. Możesz je zobaczyć sam: otwórz narzędzia programistyczne w przeglądarce, przejdź do zakładki Sieć, załaduj ponownie stronę i kliknij górne żądanie. Nagłówki są tam.

Nagłówki zabezpieczeń to po prostu te, które mówią przeglądarce, aby wymusiła regułę. Niektóre z nich są rygorystyczne, niektóre mają charakter doradczy, a wszystkie są ustawione w konfiguracji serwera, frameworku lub platformie hostingowej - a nie w kodzie HTML.

Content-Security-Policy (CSP)

CSP informuje przeglądarkę, które źródła treści mogą ładować na Twoją stronę. Jest to najpotężniejszy nagłówek w tym przypadku i ten, który ludzie uważają za najbardziej onieśmielający.

W praktyce CSP określa następujące rzeczy: skrypty mogą pochodzić tylko z Twojej własnej domeny i jednego zaufanego CDN; obrazy mogą pochodzić z dowolnego miejsca za pośrednictwem HTTPS; strona nie może być otoczona inną witryną. Jeśli coś spróbuje załadować z niedozwolonego źródła, przeglądarka zablokuje to i zarejestruje tę próbę w konsoli.

CSP to dodatkowa ochrona przed wstrzykiwaniem skryptów, wraz z bezpiecznym kodowaniem danych wyjściowych i oczyszczaniem. Jest to również nagłówek, który najprawdopodobniej coś zepsuje, jeśli ustawisz go zbyt agresywnie. Praktyczną ścieżką dla początkującego jest rozpoczęcie w trybie samego raportu, sprawdzenie, co zostałoby zablokowane, naprawienie rzeczywistych problemów, a następnie egzekwowanie tego.

Strict-Transport-Security (HSTS)

HSTS informuje przeglądarkę, aby komunikowała się z Twoją witryną wyłącznie przez HTTPS, przez określony czas. Gdy przeglądarka zobaczy ten nagłówek, odmówi nawiązania niezabezpieczonego połączenia HTTP z Twoją domeną - nawet jeśli użytkownik napisze http:// lub podążaj za starym linkiem.

Gdy przeglądarka pozna politykę HSTS, aktualizuje żądania HTTP przed ich wysłaniem. Podczas pierwszej wizyty nadal można korzystać z HTTP, chyba że domena jest już objęta wpisem wstępnego ładowania HSTS.

Jedyną rzeczą, którą należy tutaj szanować, jest zaangażowanie. HSTS jest zapamiętywana przez przeglądarkę tak długo, jak określisz, więc zacznij od krótkiego czasu trwania, podczas którego potwierdzisz, że każda subdomena działa na HTTPS, a następnie wydłuż go, gdy będziesz mieć pewność.

X-Frame-Options

X-Frame-Options kontroluje, czy inna witryna może ładować Twoje strony w ramce - an <iframe> na stronie innej osoby.

Po co się przejmować? Ponieważ ramkowanie to mechanizm odpowiedzialny za kliknięcia, podczas którego osoba atakująca nakłada na Twoją prawdziwą stronę niewidoczne lub zamaskowane elementy, aby użytkownik kliknął coś, czego nie miał na myśli. Jeśli w Twojej aplikacji jest zarejestrowana jakaś akcja - przycisk usuwania, płatność, zmiana ustawień - umieszczenie jej w innym miejscu stanowi ryzyko, którego nie chcesz.

Typowym ustawieniem jest SAMEORIGIN, co pozwala Twoim stronom na wzajemne ramki, ale blokuje wszystkie inne strony. Jeśli nigdy nie zamierzasz zostać wrobiony, jest to zazwyczaj właściwa opcja domyślna.

Referrer-Policy

Referrer-Policy decyduje, jaka część Twojego adresu URL jest udostępniana innym witrynom, gdy użytkownik kliknie link prowadzący do Twojej strony. Nowoczesne przeglądarki zwykle używają strict-origin-when-cross-origin: pełny adres URL może być wysyłany w przypadku żądań tego samego źródła, podczas gdy żądania HTTPS z różnych źródeł otrzymują tylko źródło. Wyraźnie słabsza polityka może ujawnić więcej.

Ma to znaczenie, ponieważ pełne adresy URL czasami zawierają wrażliwe wartości w ciągach zapytań - tokeny, identyfikatory, adresy e-mail, wyszukiwane hasła. Przeciekanie ich osobom trzecim jest ciche i łatwe do przeoczenia.

Rozsądnym rozwiązaniem jest wysyłanie w przypadku żądań między witrynami wyłącznie źródła lub niczego. To prawie nic Cię nie kosztuje, a eliminuje przypadkowy wyciek danych.

Pozostała część praktycznego zestawu

Kilka dodatkowych nagłówków pojawia się na tyle często, że można je poznać po nazwie:

  • X-Content-Type-Options: nosniff uniemożliwia przeglądarce odgadnięcie typu pliku, co w przeciwnym razie mogłoby przekształcić przesłany plik w wykonywalny skrypt.

  • Permissions-Policy wyłącza funkcje przeglądarki, z których nie korzystasz, takie jak kamera, mikrofon czy geolokalizacja.

  • Cross-Origin-Opener-Policy i powiązane nagłówki pochodzące z różnych źródeł izolują Twoją stronę od innych, co pomaga zapobiegać niektórym atakom.

Nie potrzebujesz ich wszystkich pierwszego dnia. Wiedząc, co robią, możesz przeczytać raport ze skanowania bez paniki.

Jak sprawdzić nagłówki w kilka minut

Masz dwa sposoby patrzenia.

Najpierw wykonaj procedurę ręczną: narzędzia programistyczne, karta Sieć, kliknij żądanie strony i przeczytaj nagłówki odpowiedzi. Jest to przydatne do potwierdzenia obecności pojedynczego nagłówka i ustawienia zgodnie z oczekiwaniami.

Po drugie, praktyczny sposób na więcej niż jedną stronę: uruchom skanowanie. Skaner pobiera Twoją witrynę w sposób podobny do przeglądarki i raportuje, które nagłówki zabezpieczeń są obecne, a których brakuje oraz co ujawnia każda luka. Dzięki temu zamiast ściany surowego tekstu otrzymasz listę z priorytetami, a także sprawdzisz strony, o których nie pomyślałbyś, aby otworzyć je ręcznie.

Narzędzie ogólnego przeznaczenia, takie jak darmowy i lekki skan bezpieczeństwa VICE, oznaczy wyniki w nagłówkach wraz z innymi problemami, wraz z dowodami stojącymi za każdym z nich, dzięki czemu będziesz mógł zobaczyć, dlaczego został zgłoszony.

Napraw je, a następnie zweryfikuj, wykonując ponowne skanowanie

Nagłówki są zapisane w konfiguracji, więc większość poprawek jest niewielka: dodaj linię do konfiguracji serwera, ustawienie w frameworku lub opcję na pulpicie nawigacyjnym hosta. Zmieniaj po jednym nagłówku na raz i sprawdzaj, czy witryna nadal działa.

Następnie przeskanuj ponownie. To jest krok, który ludzie pomijają. Edycja konfiguracji nie oznacza, że ​​nagłówek jest teraz poprawny na każdej stronie, a oznaczenie czegoś jako naprawione w dashboardzie nie jest równoznaczne z potwierdzeniem tego. Dopiero świeże skanowanie w tym samym zakresie potwierdzi, że zmiana rzeczywiście weszła w życie.

Zacznij od bezpłatnego skanowania, przyjrzyj się, co naprawdę robią Twoje nagłówki i popraw najważniejsze wyniki pojedynczo. To rozsądne pierwsze podanie i znacznie lepsza pozycja niż nadzieja, że ​​ustawienia domyślne będą w porządku.

Zacznij sprawdzać
bezpieczeństwo Twojej witryny.

Znajdź problemy, przygotuj poprawki i weryfikuj zmiany.
Zachowaj wyniki razem do następnego wdrożenia.

+10 000 przeskanowanych stron
Przegląd platformy VICE