Security

HTTP Headers

Wyświetl nagłówki odpowiedzi i audytuj polityki bezpieczeństwa.

URL http or https (default https). Up to 3 redirects are followed.
https://www.mozilla.org/
Status: 200 HTTP/1.1 310 ms
B
Security grade?
Score
77 / 100
Status
200
Protocol?
HTTP/1.1
Latency?
310 ms
Redirect chain?
  1. 301 — https://mozilla.org/
  2. 200 — https://www.mozilla.org/
Security audit
  • pass Strict-Transport-Security? +25/25
    HSTS is set with a long max-age — browsers will refuse plaintext HTTP for the next 6+ months.
    max-age=31536000
  • warn Content-Security-Policy? +12/25
    CSP allows both unsafe-inline and unsafe-eval — XSS protection is largely defeated.
    img-src 'self' blog.mozilla.org data: images.ctfassets.net www.google-analytics.com www.googletagmanager.com www.mozilla.org; form-action 'self' https://abdri3ttkb.execute-api.us-east-2.amazonaws.com https://accounts.firefox.com/ https://basket.mozilla.org; font-src 'self' www.mozilla.org; frame-ancestors 'none'; connect-src 'self' *.analytics.google.com *.google-analytics.com *.googletagmanager.com analytics.google.com cdn.transcend.io google-analytics.com googletagmanager.com gtm.mozilla.org https://abdri3ttkb.execute-api.us-east-2.amazonaws.com https://accounts.firefox.com/ https://basket.mozilla.org o1069899.ingest.sentry.io o1069899.sentry.io region1.google-analytics.com telemetry.transcend.io telemetry.us.transcend.io transcend-cdn.com www.mozilla.org/submit/bedrock/; base-uri 'none'; object-src 'none'; default-src 'self' *.mozilla.org; style-src 'self' 'unsafe-inline' cdn.transcend.io transcend-cdn.com www.mozilla.org; script-src 'self' 'unsafe-eval' 'unsafe-inline' *.google-analytics.com *.googletagmanager.com cdn.transcend.io google-analytics.com googletagmanager.com js.stripe.com s.ytimg.com tagmanager.google.com transcend-cdn.com www.mozilla.org www.youtube.com; frame-src 'self' accounts.firefox.com gtm.mozilla.org js.stripe.com www.google-analytics.com www.googletagmanager.com www.youtube.com; media-src 'self' assets.mozilla.net videos.cdn.mozilla.net www.mozilla.org; upgrade-insecure-requests
  • pass X-Frame-Options / frame-ancestors? +15/15
    Clickjacking is blocked — page cannot be embedded in third-party iframes.
    DENY
  • pass X-Content-Type-Options +10/10
    nosniff is set — browsers will not MIME-sniff non-script responses as JavaScript.
    nosniff
  • pass Referrer-Policy? +15/15
    Referrer policy keeps full URLs from leaking to third-party origins.
    strict-origin-when-cross-origin
  • fail Permissions-Policy? +0/10
    No Permissions-Policy — third-party iframes can request sensitive features without restriction.
Response headers
connection: keep-alive content-length: 48462 x-frame-options: DENY etag: "d0dafd76ef640d1710698ddd5407e3b4" content-security-policy-report-only: img-src 'self' blog.mozilla.org data: images.ctfassets.net www.google-analytics.com www.googletagmanager.com www.mozilla.org; form-action 'self' https://abdri3ttkb.execute-api.us-east-2.amazonaws.com https://accounts.firefox.com/ https://basket.mozilla.org; font-src 'self' www.mozilla.org; frame-ancestors 'none'; connect-src 'self' *.analytics.google.com *.google-analytics.com *.googletagmanager.com analytics.google.com cdn.transcend.io google-analytics.com googletagmanager.com gtm.mozilla.org https://abdri3ttkb.execute-api.us-east-2.amazonaws.com https://accounts.firefox.com/ https://basket.mozilla.org o1069899.ingest.sentry.io o1069899.sentry.io region1.google-analytics.com telemetry.transcend.io telemetry.us.transcend.io transcend-cdn.com www.mozilla.org/submit/bedrock/; base-uri 'none'; object-src 'none'; default-src 'self' *.mozilla.org; style-src 'self' 'unsafe-inline' cdn.transcend.io transcend-cdn.com www.mozilla.org; script-src 'self' 'unsafe-eval' 'unsafe-inline' *.google-analytics.com *.googletagmanager.com cdn.transcend.io google-analytics.com googletagmanager.com js.stripe.com s.ytimg.com tagmanager.google.com transcend-cdn.com www.mozilla.org www.youtube.com; frame-src 'self' accounts.firefox.com gtm.mozilla.org js.stripe.com www.google-analytics.com www.googletagmanager.com www.youtube.com; media-src 'self' assets.mozilla.net videos.cdn.mozilla.net www.mozilla.org; upgrade-insecure-requests x-content-type-options: nosniff referrer-policy: strict-origin-when-cross-origin content-type: text/html; charset=utf-8 cross-origin-opener-policy: same-origin expires: Sun, 26 Jul 2026 17:29:55 GMT server: granian x-backend-server: bedrock-74d9c74bff-mhktt.gcp-us-west1 cache-control: max-age=600 via: 1.1 google, 1.1 varnish, 1.1 varnish strict-transport-security: max-age=31536000 content-security-policy: img-src 'self' blog.mozilla.org data: images.ctfassets.net www.google-analytics.com www.googletagmanager.com www.mozilla.org; form-action 'self' https://abdri3ttkb.execute-api.us-east-2.amazonaws.com https://accounts.firefox.com/ https://basket.mozilla.org; font-src 'self' www.mozilla.org; frame-ancestors 'none'; connect-src 'self' *.analytics.google.com *.google-analytics.com *.googletagmanager.com analytics.google.com cdn.transcend.io google-analytics.com googletagmanager.com gtm.mozilla.org https://abdri3ttkb.execute-api.us-east-2.amazonaws.com https://accounts.firefox.com/ https://basket.mozilla.org o1069899.ingest.sentry.io o1069899.sentry.io region1.google-analytics.com telemetry.transcend.io telemetry.us.transcend.io transcend-cdn.com www.mozilla.org/submit/bedrock/; base-uri 'none'; object-src 'none'; default-src 'self' *.mozilla.org; style-src 'self' 'unsafe-inline' cdn.transcend.io transcend-cdn.com www.mozilla.org; script-src 'self' 'unsafe-eval' 'unsafe-inline' *.google-analytics.com *.googletagmanager.com cdn.transcend.io google-analytics.com googletagmanager.com js.stripe.com s.ytimg.com tagmanager.google.com transcend-cdn.com www.mozilla.org www.youtube.com; frame-src 'self' accounts.firefox.com gtm.mozilla.org js.stripe.com www.google-analytics.com www.googletagmanager.com www.youtube.com; media-src 'self' assets.mozilla.net videos.cdn.mozilla.net www.mozilla.org; upgrade-insecure-requests x-clacks-overhead: GNU Terry Pratchett accept-ranges: bytes date: Sun, 26 Jul 2026 18:57:00 GMT age: 398 x-served-by: cache-fra-eddf8230094-FRA, cache-fra-eddf8230094-FRA, cache-fra-etou8220173-FRA x-cache: MISS, HIT x-cache-hits: 0, 1 x-timer: S1785092220.358667,VS0,VE2 vary: Accept-Language, Accept-Encoding
What does each field mean?

Field reference

Ocena bezpieczeństwa

Zagregowany wynik nagłówków bezpieczeństwa ważony wpływem: HSTS i CSP ważą najwięcej. A+ wymaga poprawnego ustawienia wszystkich pięciu nagłówków; F oznacza brak jakichkolwiek. Użyj jako szybkiej miary pierwszego rzutu oka, a potem zajrzyj do szczegółów per-nagłówek poniżej.

Protokół HTTP

HTTP/1.1 to przestarzały protokół tekstowy. HTTP/2 multipleksuje strumienie po jednym połączeniu TCP (kompresja nagłówków, server push). HTTP/3 działa na QUIC (UDP) — lepiej na łączach niestabilnych i mobilnych. Nowoczesny serwer powinien udostępniać co najmniej HTTP/2.

Opóźnienie

Round-trip od naszego serwera do celu, aż do pierwszego bajtu odpowiedzi. To nie benchmark CDN — wpływają na niego odległość geograficzna, TLS handshake i rozgrzewka serwera. Traktuj jako orientacyjny sygnał świeżości, a nie produkcyjne dane wydajności.

Łańcuch przekierowań

Długi łańcuch (3+ przekierowania) szkodzi SEO i wydajności. Klasyczny wzorzec to <code>http://example.com → https://example.com → https://www.example.com</code>: dwa hopy, akceptowalnie. Powyżej pięciu — błąd konfiguracji.

Strict-Transport-Security (HSTS)

HSTS mówi przeglądarce: "nigdy więcej nie łącz się ze mną po zwykłym HTTP". <code>max-age=15768000</code> (6 miesięcy) to praktyczne minimum; <code>includeSubDomains; preload</code> dopisuje domenę do globalnej listy preload. Po wpisaniu na listę nie da się jej opuścić przez ~12 miesięcy — najpierw skonfiguruj resztę.

Content-Security-Policy (CSP)

CSP określa, skąd mogą się ładować skrypty, style, obrazy i ramki. <code>default-src 'self'</code> to rozsądny baseline; oparte na nonce <code>script-src</code> jest najmocniejsze. Uwaga na <code>unsafe-inline</code> i <code>unsafe-eval</code> — niemal niwelują ochronę CSP przed XSS. Używaj report-uri / report-to do monitoringu.

X-Frame-Options

Ustaw <code>DENY</code>, aby całkowicie zabronić ramek, lub <code>SAMEORIGIN</code>, aby zezwolić tylko na ramki tego samego pochodzenia. Nowoczesnym odpowiednikiem jest <code>frame-ancestors</code> w CSP (bogatsza składnia) — każdy z tych dwóch spełnia nasz audyt.

Referrer-Policy

Określa, co przeglądarka wysyła w nagłówku <code>Referer</code>. <code>strict-origin-when-cross-origin</code> (domyślne w nowoczesnych przeglądarkach) to dobry baseline: pełny URL przy same-origin, jedynie origin przy cross-origin, nic przy downgrade. <code>no-referrer</code> usuwa referer całkowicie; <code>unsafe-url</code> wycieka pełne URL-e przy downgrade — unikać.

Permissions-Policy

Następca Feature-Policy. Pozwala zezwalać / zabraniać API przeglądarki per-origin: <code>camera=(), microphone=(), geolocation=(self)</code>. Głównie defense-in-depth; egzekwowane na iframe, więc bezpieczniejsze zachowanie dla osadzonej treści.

X-Content-Type-Options: nosniff

Bez tego nagłówka przeglądarka może wykonać odpowiedź JSON jako JavaScript, jeśli "wygląda jak skrypt". Ustawienie <code>X-Content-Type-Options: nosniff</code> wymusza honorowanie zadeklarowanego Content-Type. Tani, zawsze bezpieczny do włączenia — nie ma dobrego powodu, by go pomijać.

O tym narzędziu

HTTP Headers pobiera Twój URL prawdziwym żądaniem HTTPS, przechwytuje każdy nagłówek odpowiedzi (oraz każdą pośrednią odpowiedź na trasie przekierowań) i przepuszcza wynik przez audyt bezpieczeństwa pokrywający nowoczesne nagłówki hardeningu: Strict-Transport-Security, Content-Security-Policy, X-Frame-Options / CSP frame-ancestors, X-Content-Type-Options, Referrer-Policy i Permissions-Policy. Każdy nagłówek jest sprawdzany pod kątem obecności, sensowności wartości i luk względem best practices.

Poza audytem wymieniamy każdy nagłówek dosłownie, byś mógł potwierdzić politykę cache'owania (Cache-Control, ETag, Vary), śledzenie CDN (CF-Ray, X-Cache, X-Served-By), kompresję (Content-Encoding: br/gzip) i wszelkie własne nagłówki, które emituje Twój stack. Metoda HTTP (GET lub HEAD), negocjowana wersja HTTP (HTTP/1.1, HTTP/2, HTTP/3) i wersja TLS są raportowane w pasku żądania.

Kiedy używać tego narzędzia

  • Hardening bezpieczeństwa. Przed produkcją potwierdź, że HSTS, CSP i reszta są ustawione na bezpieczne wartości — minimum baseline Mozilla Observatory.
  • Debugowanie cache. Zobacz dokładnie, jakie Cache-Control i Vary emituje Twój CMS lub framework — częsta przyczyna "stara wersja się trzyma".
  • Audyty łańcuchów przekierowań. Wykryj przypadkowe łańcuchy 302-potem-301, pętle HTTP-do-HTTPS-do-innego-hosta i brakującą kanonizację.
  • Zachowanie CDN. Potwierdź, że Cloudflare/Fastly/CloudFront faktycznie cache'uje to, co myślisz, czytając nagłówki Age, X-Cache i specyficzne dla CDN.

Co pokrywa nasz audyt bezpieczeństwa

Dla każdego z sześciu nagłówków hardeningu raportujemy: obecny lub brakujący, rzeczywistą wartość i krótki werdykt ("good", "needs tightening", "vulnerable"). HSTS bez includeSubDomains, CSP z unsafe-inline lub Referrer-Policy pozostawiony na default są flagowane. Nigdy nie mówimy "idealnej" polityki, bo każda strona jest inna — ale mówimy, które pokrętła nadal są na ustawieniu fabrycznym.

Najczęstsze pytania

Co to jest HSTS i dlaczego ma znaczenie?

Strict-Transport-Security mówi przeglądarce "zawsze używaj HTTPS dla tej domeny, nawet jeśli użytkownik wpisał http:// lub kliknął link http://". Raz ustawione z rozsądnym max-age (typowo 31536000 = 1 rok), zapobiega atakom SSL-stripping przy kolejnych wizytach. Dodanie includeSubDomains rozszerza ochronę na każdą subdomenę — mocny default dla większości stron, ale upewnij się najpierw, że wszystkie naprawdę obsługują HTTPS.

Brakuje mi CSP — jak bardzo to niebezpieczne?

Bez CSP każda dziura XSS na Twojej stronie wykonuje się z pełną mocą: może wycieknąć ciasteczka, załadować skrypty kontrolowane przez atakującego lub przepisać DOM. Startowy CSP default-src 'self' blokuje najpopularniejsze ładunki XSS (inline skrypty, zewnętrzne ładowanie skryptów) niemal bezkosztowo. Bardziej restrykcyjne polityki zakazujące inline skryptów wymagają refaktoryzacji, ale dają znacznie silniejszą ochronę.

Czy podążacie za przekierowaniami?

Tak — do pięciu hopów. Każdy krok jest pokazany z metodą, statusem, location i nagłówkami, byś mógł wykryć hopy mieszanego protokołu (HTTP→HTTPS), brakującą kanonizację (apex vs www) lub przypadkowe pętle. Większość produkcyjnych stron powinna przekierowywać najwyżej raz (HTTP → HTTPS), a potem serwować zawartość; więcej niż dwa hopy to zwykle znak nakładających się reguł rewrite.

Dlaczego narzędzie pokazuje HTTP/2, choć skonfigurowałem HTTP/3?

HTTP/3 (QUIC nad UDP) wymaga od klienta opt-in poprzez nagłówek Alt-Svc przy pierwszym połączeniu. Nasz checker używa domyślnie HTTP/2 nad TCP, co wciąż robi większość klientów HTTP; jeśli Twój serwer ogłasza HTTP/3 w Alt-Svc, zobaczysz ten nagłówek w wyniku, ale sama odpowiedź pozostanie na HTTP/2. Obecność Alt-Svc to właściwa rzecz do sprawdzenia.