← Wszystkie testy
BezpieczeństwoTypowa waga: Średni

Skaner nagłówków bezpieczeństwa

Sprawdza, czy Twoja strona wysyła kluczowe nagłówki HTTP bezpieczeństwa, takie jak CSP, HSTS i X-Frame-Options.

Co sprawdza

Ten skaner sprawdza nagłówki bezpieczeństwa HTTP, które twoja strona wysyła przy każdej odpowiedzi, takie jak Content-Security-Policy, HSTS czy X-Frame-Options. Patrzy, które są obecne, a których brakuje. To instrukcje, które serwer przekazuje przeglądarce, żeby się chronić.

Dlaczego to ważne

Bez tych nagłówków przeglądarka nie włącza kluczowych zabezpieczeń, a strona jest bardziej narażona na ataki takie jak wstrzykiwanie skryptów czy clickjacking. Wiele frameworków nie ustawia ich domyślnie, więc łatwo o nich zapomnieć. Ich brak obniża też twoją ocenę w audytach bezpieczeństwa.

Jak to naprawić

Dodaj brakujące nagłówki w konfiguracji serwera, CDN lub frameworka, tam gdzie definiujesz odpowiedzi HTTP. Zacznij od najważniejszych: Content-Security-Policy, Strict-Transport-Security i X-Frame-Options. Wiele hostingów, jak Vercel czy Netlify, pozwala ustawić je w pliku nagłówków bez dotykania kodu.

Jak działa ta kontrola

Scanaris pobiera Twoją stronę główną tak jak przeglądarka i czyta nagłówki odpowiedzi. Szuka sześciu konkretnych nagłówków i dla każdego brakującego otwiera znalezisko z zalecaną wartością: Content-Security-Policy, Strict-Transport-Security i X-Frame-Options ze średnią wagą oraz X-Content-Type-Options, Referrer-Policy i Permissions-Policy z niską. Nie ocenia tu jakości CSP ani HSTS: tym zajmują się kontrole słabe CSP i słabe HSTS. Sprawdzana jest tylko odpowiedź skanowanego URL-a, więc jeśli Twoje API żyje na innej domenie, przeskanuj ją osobno.

Co chroni każdy nagłówek

  • Content-Security-Policy ogranicza, skąd mogą być ładowane skrypty, style i obrazy. To główna obrona przed wstrzykiwaniem skryptów (XSS).
  • Strict-Transport-Security zmusza przeglądarkę do zawsze używania HTTPS z Twoją domeną, nawet jeśli ktoś wpisze adres bez „s".
  • X-Frame-Options uniemożliwia osadzenie Twojej strony w cudzym iframe, co jest podstawą clickjackingu.
  • X-Content-Type-Options: nosniff zapobiega „zgadywaniu" typu pliku przez przeglądarkę i wykonywaniu jako skrypt czegoś, co nim nie było.
  • Referrer-Policy kontroluje, jaka część URL-a trafia do innych stron, gdy użytkownik klika link.
  • Permissions-Policy wyłącza API przeglądarki, których nie używasz, jak kamera, mikrofon czy geolokalizacja.

Jak je dodać w zależności od hostingu

Vercel

W vercel.json albo w next.config funkcją headers(), jeśli używasz Next.js:

{
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        { "key": "Strict-Transport-Security", "value": "max-age=63072000; includeSubDomains; preload" },
        { "key": "X-Frame-Options", "value": "DENY" },
        { "key": "X-Content-Type-Options", "value": "nosniff" },
        { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" },
        { "key": "Permissions-Policy", "value": "camera=(), microphone=(), geolocation=()" }
      ]
    }
  ]
}

Netlify

Plik _headers w publikowanym katalogu:

/*
  Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  X-Frame-Options: DENY
  X-Content-Type-Options: nosniff
  Referrer-Policy: strict-origin-when-cross-origin
  Permissions-Policy: camera=(), microphone=(), geolocation=()

Nuxt

W nuxt.config, wewnątrz routeRules, reguła '/**' z obiektem headers i tymi samymi parami klucz-wartość. Dokładnie tak robi Scanaris.

Express

import helmet from 'helmet';
app.use(helmet());

nginx

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

Content-Security-Policy celowo nie ma w przykładach: zależy od tego, jakie skrypty i usługi ładuje Twoja strona, i najlepiej zacząć ją w trybie raportowania. Procedura jest w nagłówki bezpieczeństwa HTTP wyjaśnione dla ludzi.

Sprawdź, czy są

curl -sI https://twojadomena.com | grep -iE "strict-transport|x-frame|x-content-type|referrer-policy|permissions-policy|content-security"

Powinno pojawić się sześć linii. Jeśli masz CDN przed serwerem, sprawdzaj na publicznym URL-u, bo niektóre CDN-y usuwają lub nadpisują nagłówki. Analizator nagłówków robi ten sam odczyt z wyjaśnieniem dla każdego nagłówka.

Często zadawane pytania

X-Frame-Options czy frame-ancestors?

Oba robią to samo; frame-ancestors w CSP to nowoczesna wersja i pozwala wymienić konkretne domeny. Zostaw też X-Frame-Options dla starszych przeglądarek; nie przeszkadzają sobie.

Czy dodając te nagłówki mogę zepsuć stronę?

Pięć z przykładów nie psuje niczego na normalnej stronie. Jedyny ryzykowny to CSP, dlatego dodaje się go najpierw w trybie Content-Security-Policy-Report-Only i przełącza na blokowanie, gdy raporty są czyste.

Czy w HSTS potrzebne jest preload?

Nie, żeby przejść kontrolę. preload pozwala umieścić Twoją domenę na liście wbudowanej w przeglądarki; to zobowiązanie na długo (cała domena i subdomeny na HTTPS na zawsze), więc włącz je tylko, gdy masz pewność.

Sprawdź to na swojej stronie

Przeskanuj swoją stronę za darmo i zobacz, czy ten i 44 inne testy przechodzą, z promptem naprawczym dla każdego problemu.

Przeskanuj moją stronę za darmo

Z bloga

Powiązane testy