Sprawdzanie nagłówków bezpieczeństwa

Wklej nagłówki odpowiedzi strony —curl -sI https://your-site.example/w terminalu lub blok z panelu Sieć przeglądarki — i otrzymaćOcena od A+ do Fna liście kontrolnej OWASP Secure Headers:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, ochrona przed osadzaniem w ramce,Referrer-Policy, Permissions-Policy, trójka izolacji cross-origin, ujawnianie wersji, przestarzałe nagłówki i flagi ciasteczek — każdy wynik sparowany z dokładnąnginx, Apache i Expresswiersze, które to naprawiają. Całe przetwarzanie odbywa się w przeglądarce; strona nigdy nie kontaktuje się z serwisem.
Wiersz statusu jest opcjonalny. Wszystkie wiersze Set-Cookie są sprawdzane. Aby w ogóle mieć politykę do oceny, zbuduj ją w generatorze CSP; aby rozbić blok nagłówków wiersz po wierszu, użyj analizatora nagłówków HTTP.
Brak oceny. Wklej nagłówki odpowiedzi i naciśnij Sprawdź nagłówki albo wczytaj przykład.
Wiersze naprawcze dla każdego wyniku pojawią się tutaj po sprawdzeniu.
Zakres tego sprawdzania a Sprawdzanie SSL. Ta strona ocenia nagłówki bezpieczeństwa odpowiedzi (wyżej wymieniona lista OWASP). Sprawdzanie SSL ocenia konfigurację HTTPS: łańcuch certyfikatów, wersje protokołów, siłę szyfrów i mieszaną zawartość. HSTS i flagi ciasteczek pojawiają się na obu stronach, bo obie listy je zawierają, ale z innej perspektywy — aby mieć pełny obraz, uruchom oba sprawdzenia.
Autotest
Uruchamia ponownie oceniacza na wzorcowych blokach nagłówków: dobry przykład na A+, zły na F z wszystkimi odjęciami, każda reguła osobno (arytmetyka wyniku), ograniczenie ujawniania wersji, uwagi doradcze o ciasteczkach, uwagi o jakości CSP, frame-ancestors liczony jako ochrona przed osadzaniem w ramce, progi ocen po obu stronach każdej granicy, fragmenty napraw oraz ścieżki negatywne. Nic nie jest nigdzie wysyłane.
Czym są nagłówki bezpieczeństwa?
W jednym zdaniu: nagłówki bezpieczeństwa to nagłówki odpowiedzi, które nakazują przeglądarce wymuszać zabezpieczenie, którego sama nie mogłaby ustalić — nigdy nie ładuj skryptów z nieznanych źródeł, nigdy więcej nie rozmawiaj z tym hostem przez zwykłe HTTP, nigdy nie osadzaj tej strony w ramce — a każdy kosztuje jedną linię konfiguracji.
Nagłówki, które ocenia ta strona
NagłówekChroni przedzalecana wartość OWASP
Strict-Transport-Securityobniżenie protokołu i kradzież ciasteczek przy pierwszym żądaniu zwykłym HTTPmax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, złośliwe osadzenia, mieszana zawartośćdefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-Optionspomieszanie MIME (skrypt podany jako obraz)nosniff
X-Frame-Options / CSP frame-ancestorsclickjacking (strona osadzona w ramce przez atakującego)deny / 'none'
Referrer-Policywyciek adresów URL (z tokenami) do stron zewnętrznychno-referrer
Permissions-Policystrony i osadzenia po cichu korzystające z kamery, mikrofonu, geolokalizacjiwszystkie funkcje wyłączone
Cross-Origin-Opener-Policyinne okna sięgające do kontekstu przeglądaniasame-origin
Cross-Origin-Embedder-Policyładowanie zasobów, które nie wyraziły zgody (umożliwia izolację procesów)require-corp
Cross-Origin-Resource-Policyzasoby osadzane przez inne stronysame-origin
Jak wyliczana jest ocena

Zacznij od 100 i odejmuj: −25 za brak CSP, −20 za brak HSTS, −10 za każdy brak X-Content-Type-Options, Referrer-Policy lub ochrony przed osadzaniem w ramce, −5 za każdy z trzech nagłówków cross-origin i Permissions-Policy, −5 za ujawnianie wersji w Server/X-Powered-By (z limitem), oraz −5 za niezerową wartość X-XSS-Protection. Oceny literowe: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, poniżej = F. Uwagi doradcze (flagi ciasteczek, kontrola pamięci podręcznej, jakość CSP) nie odejmują punktów.

Typowe błędy
  • Ustawianie nagłówków na niewłaściwych odpowiedziach. Dodawaj je do każdej odpowiedzi, także stron błędów i przekierowań — właśnie do tego służy always w add_header ... always; (nginx) i Header always set (Apache).
  • Testowanie tylko strony głównej. Proxy, pamięci podręczne i starsze aplikacje często usuwają lub nadpisują nagłówki tylko na niektórych ścieżkach. Sprawdzaj strony, które mają znaczenie: logowanie, płatność, punkty końcowe API.
  • Zachowywanie X-XSS-Protection. Audytor, którym sterował, sam powodował podatności; przeglądarki go usunęły. Niezerowa wartość obecnie celowo kosztuje punkty — usuń ją i pozwól zrobić to CSP.
  • Przekonanie, że X-Frame-Options jest aktualne. Nie pozwala na wskazywanie konkretnych źródeł i nie ma go w standardzie CSP; nowoczesnym zamiennikiem jest frame-ancestors. Utrzymywanie obu w okresie przejściowym jest w porządku — ta strona akceptuje którykolwiek z nich.
  • Wysyłanie banerów wersji. Server: Apache/2.4.58 (Unix) zawęża atakującemu poszukiwanie znanych błędów bez żadnej korzyści. Usuń wersję i ogranicz liczbę wierszy.
FAQ

Dlaczego COOP/COEP/CORP są warte tylko po 5 punktów? Ta trójka to najnowsza warstwa, potrzebna głównie tam, gdzie chce się izolacji procesów (SharedArrayBuffer, utwardzanie przed Spectre). Strona bez nich zachowuje swoje podstawowe zabezpieczenia; z nimi część osadzeń cross-origin wymaga dostosowania — dlatego ważą mniej niż CSP czy HSTS.

Czy wysoka ocena oznacza, że strona jest bezpieczna? Nie — oznacza, że nagłówki odpowiedzi są ustawione. Nagłówki bezpieczeństwa to jedna warstwa: o tym, czy strona jest naprawdę bezpieczna, nadal decydują konfiguracja TLS, obsługa sesji, walidacja danych wejściowych i łatanie. Warstwę TLS sprawdza Sprawdzanie SSL.

Dlaczego wartość Permissions-Policy jest tak długa? Bazowa konfiguracja OWASP wyłącza jawnie każdą funkcję, dzięki czemu nowe funkcje dodawane przez przeglądarkę nie zostaną po cichu ponownie włączone. Krótsza wartość, np. camera=(), microphone=(), geolocation=(), to dobry początek — warto tylko wiedzieć, co pozostaje włączone.

Czy mogę tutaj sprawdzić nagłówki dowolnej strony? Ta strona nigdy nie wykonuje żądań sieciowych — ocenia dokładnie tekst, który wklejono, więc działa za zaporami i na wewnętrznych hostach, a nic, co zostanie sprawdzone, nie opuszcza komputera. Pobranie nagłówków to jedno polecenie curl -sI w terminalu.

A co z Clear-Site-Data i X-Permitted-Cross-Domain-Policies? Przydatne w wąskich scenariuszach (odpowiedzi przy wylogowaniu; starsze przeglądarki PDF/Flash). Tutaj mają charakter doradczy, nie są punktowane — wysyłanie Clear-Site-Data w każdej odpowiedzi kasowałoby pamięć użytkowników przy każdym ładowaniu strony.