Przejdź do treści
mojeip.io

Strony WWW

Nagłówki bezpieczeństwa HTTP - co ustawić i jak (HSTS, CSP i inne)

10 lipca 2026 · 4 min czytania · zaktualizowano 29 września 2026

Przy każdym otwarciu strony serwer wysyła zestaw nagłówków HTTP - metadanych, które sterują zachowaniem przeglądarki. Część z nich to nagłówki bezpieczeństwa: kilka linijek w konfiguracji serwera, które realnie chronią użytkowników przed popularnymi atakami. Poniżej znajdziesz, co ustawić, z przykładowymi wartościami, gotową konfiguracją dla Apache i nginx oraz ostrzeżeniami, jak nie zepsuć przy tym strony.

Najważniejsze nagłówki i ich wartości

NagłówekPrzykładowa wartośćPrzed czym chroniUwaga
Strict-Transport-Security (HSTS)max-age=31536000; includeSubDomainsPołączeniem bez szyfrowania i podmianą na wersję httpDziała tylko przy HTTPS. Opcji preload używaj świadomie: trudno ją wycofać
Content-Security-Policy (CSP)default-src 'self'; frame-ancestors 'none'Wstrzykiwaniem skryptów (XSS), osadzaniem w ramceŹle ustawiona blokuje własne skrypty strony; zacznij od trybu Report-Only
X-Content-Type-Optionsnosniff„Zgadywaniem” typu plików przez przeglądarkęBezpieczny do włączenia od razu
X-Frame-OptionsDENY lub SAMEORIGINClickjackingiem, czyli osadzaniem strony w niewidocznej ramceNowszy odpowiednik to frame-ancestors w CSP; warto ustawić oba
Referrer-Policystrict-origin-when-cross-originWyciekiem pełnych adresów URL do innych stronBezpieczny do włączenia od razu
Permissions-Policygeolocation=(), camera=(), microphone=()Użyciem funkcji urządzenia przez osadzone skryptyWyłącz to, czego strona nie używa

Nagłówka X-XSS-Protection, zalecanego w starszych poradnikach, nie trzeba już ustawiać. Chrome, Edge i Firefox go nie obsługują, a OWASP zaleca go nie ustawiać (albo ustawić na 0), bo przed XSS skutecznie chroni CSP.

Jak dodać nagłówki na serwerze

Apache (.htaccess)

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"
    Header always set Content-Security-Policy-Report-Only "default-src 'self'"
</IfModule>

nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always;
add_header Content-Security-Policy-Report-Only "default-src 'self'" always;

Dwie pułapki: w Apache potrzebny jest moduł mod_headers (na większości hostingów jest włączony), a w nginx dyrektywy add_header z bloku server nie są dziedziczone przez blok location, który ma własne add_header. Wtedy trzeba je tam powtórzyć.

Na hostingu współdzielonym zwykle wystarczy plik .htaccess. W WordPressie część nagłówków ustawiają wtyczki bezpieczeństwa, a przy Cloudflare można je dodać regułami w panelu. Po zmianach sprawdź wynik w podglądzie nagłówków HTTP.

Jak wdrożyć CSP, nie psując strony

Content-Security-Policy to najskuteczniejszy, ale też najbardziej ryzykowny nagłówek. Mówi przeglądarce, skąd wolno ładować skrypty, style, obrazy i czcionki. Wszystko spoza listy zostaje zablokowane, także Twoja analityka, czat czy osadzone filmy, jeśli o nich zapomnisz.

  1. Zacznij od nagłówka Content-Security-Policy-Report-Only (jak w konfiguracji powyżej). Przeglądarka tylko zgłasza naruszenia w konsoli narzędzi deweloperskich, niczego nie blokuje.
  2. Przejrzyj najważniejsze podstrony i dopisz do polityki źródła, z których faktycznie ładujesz zasoby, np. script-src 'self' https://www.googletagmanager.com.
  3. Unikaj 'unsafe-inline' w script-src, bo niweczy ochronę przed XSS. Skrypty wpisane bezpośrednio w HTML lepiej przenieść do plików albo oznaczyć jednorazowym znacznikiem (nonce).
  4. Gdy konsola jest czysta, zmień nazwę nagłówka na Content-Security-Policy.

Jak liczymy ocenę A-F

Nasza ocena nagłówków bezpieczeństwa sprawdza obecność sześciu nagłówków i przyznaje za nie punkty:

Ocena A to co najmniej 90 punktów, B - 75, C - 55, D - 40, E - 20. Nagłówek Content-Security-Policy-Report-Only nie jest liczony jako CSP, bo niczego nie blokuje, więc w fazie testów wynik wyniesie 75 punktów (B). Test sprawdza, czy nagłówek jest ustawiony, a nie, czy jego wartość jest optymalna. Wynik A to dobry początek, a nie gwarancja bezpieczeństwa.

Bezpieczeństwo to więcej niż nagłówki

Nagłówki działają w parze z ważnym certyfikatem: HSTS ma sens tylko przy HTTPS. Jak działa certyfikat i co oznaczają błędy, wyjaśniamy w poradniku o certyfikatach SSL, a stan swojego sprawdzisz w teście certyfikatu. Warto też wiedzieć, na czym stoi Twoja strona i czy nie zdradza wersji oprogramowania - pomoże w tym poradnik o wykrywaniu technologii. Z zewnątrz nie powinny być też dostępne zbędne usługi, co opisujemy we wpisie o otwartych portach.

Źródła

Sprawdź ocenę swojej strony

Ocena A-F nagłówków bezpieczeństwa + konkretne porady.

Powiązane narzędzia:

Przeczytaj też