Nagłówki bezpieczeństwa (security headers) to wyspecjalizowane dyrektywy przesyłane w nagłówkach odpowiedzi HTTP przez serwer bezpośrednio do przeglądarki użytkownika. Definiują reguły, których przeglądarka ma przestrzegać przy renderowaniu strony — jakie zasoby może ładować, czy może być wyświetlana w ramce, czy wymuszać HTTPS.
Ich celem jest redukcja ryzyka skutecznych ataków, takich jak Cross-Site Scripting (XSS), clickjacking czy przechwycenie połączenia.
Kluczowe nagłówki bezpieczeństwa
Content-Security-Policy (CSP)
Jeden z najważniejszych i jednocześnie najtrudniejszych do skonfigurowania nagłówków. Definiuje politykę bezpieczeństwa treści — z jakich domen przeglądarka może ładować skrypty, style, obrazy, fonty i inne zasoby.
Prawidłowo skonfigurowany CSP znacząco utrudnia ataki XSS (Cross-Site Scripting), które polegają na wstrzyknięciu złośliwego kodu JavaScript do strony. Jeśli przeglądarka dostanie instrukcję: „ładuj skrypty tylko z tej domeny”, obcy skrypt zostanie zablokowany.
Uwaga: restrykcyjna polityka CSP bez wcześniejszego testowania zazwyczaj blokuje legalne zasoby — skrypty wtyczek, fonty Google, zewnętrzne kody analityczne. Wdrożenie CSP warto zacząć od trybu raportowania (Content-Security-Policy-Report-Only), który tylko loguje naruszenia, nie blokując ich.
Strict-Transport-Security (HSTS)
Informuje przeglądarkę, że cała komunikacja ze stroną powinna odbywać się wyłącznie przez HTTPS. Po pierwszej wizycie przez HTTPS przeglądarka zapamiętuje tę informację i przez określony czas (dyrektywa max-age) automatycznie blokuje połączenia HTTP, nawet jeśli użytkownik wpisze adres bez https://.
Ważne: HSTS można bezpiecznie włączyć wyłącznie wtedy, gdy cała domena i wszystkie jej subdomeny mają poprawnie skonfigurowany certyfikat SSL. Włączenie HSTS na domenie bez działającego SSL może zablokować dostęp do strony.
Więcej o różnicy między HTTP a HTTPS: HTTP vs HTTPS w WordPress.
X-Frame-Options
Kontroluje, czy strona może być wyświetlana wewnątrz ramki <iframe> na innej stronie. Ustawienie DENY lub SAMEORIGIN chroni przed atakami clickjacking — techniką, w której złośliwa strona nakłada niewidoczną ramkę ze stroną ofiary, skłaniając użytkownika do kliknięcia w miejsca, których nie widzi.
X-Content-Type-Options
Ustawienie nosniff zapobiega MIME sniffingowi — próbom przez przeglądarkę zgadywania typu pliku, gdy serwer nieprawidłowo go deklaruje. Bez tego nagłówka plik tekstowy mógłby być wykonany jako skrypt.
Permissions-Policy
Kontroluje dostęp strony do funkcji przeglądarki: kamery, mikrofonu, geolokalizacji, czujnika wibracji. Pozwala zablokować funkcje, których strona nie potrzebuje.
Przestarzałe nagłówki — czego unikać
X-XSS-Protection — starszy nagłówek, który w nowoczesnych przeglądarkach jest ignorowany lub wręcz może powodować problemy. Nie należy go już stosować. Jego rolę przejmuje Content-Security-Policy.
Jak sprawdzić stan nagłówków bezpieczeństwa
Najprostsze narzędzie to securityheaders.com — wystarczy podać adres strony, a serwis sprawdza obecność i konfigurację nagłówków bezpieczeństwa oraz ocenia je w skali A+ do F.
Narzędzie Site Health w WordPress (Narzędzia → Zdrowie witryny → Informacje) zawiera sekcję ze szczegółowymi danymi o konfiguracji serwera. Brak nagłówków bezpieczeństwa jest jednym z najczęstszych uchybień raportowanych przez Site Health.
Jak dodać nagłówki bezpieczeństwa w WordPress
Na poziomie serwera — najwydajniejsza metoda
- Serwer Apache — edycja pliku
.htaccessza pomocą dyrektywyHeader set. Przykład:
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN" - Serwer Nginx — edycja bloku konfiguracyjnego w pliku
.confza pomocą dyrektywyadd_header.
Konfiguracja na poziomie serwera jest najwydajniejsza — nagłówki są wysyłane zanim WordPress uruchomi jakikolwiek kod PHP.
Przez wtyczki WordPress
Dla osób bez dostępu do konfiguracji serwera istnieją wtyczki zarządzające nagłówkami bezpieczeństwa, np. Headers Security Advanced & HSTS WP. Działają wolniej niż konfiguracja serwerowa, ale nie wymagają wiedzy technicznej.
Przez platformy CDN / proxy
Usługi takie jak Cloudflare umożliwiają konfigurację nagłówków bezpieczeństwa na poziomie swojej infrastruktury — bez modyfikacji plików serwera lub WordPress.
Związek z innymi mechanizmami bezpieczeństwa
Nagłówki bezpieczeństwa to jedna warstwa ochrony, nie jedyna. Działają w połączeniu z innymi mechanizmami:
- WAF (Web Application Firewall) filtruje złośliwy ruch zanim dotrze do serwera — to inna warstwa niż nagłówki, które działają po dotarciu odpowiedzi do przeglądarki: WAF w WordPress.
- Nonce w WordPress to mechanizm ochrony przed atakami CSRF na poziomie kodu PHP — uzupełnia Content-Security-Policy: Nonce w WordPress.
- Podatności w kodzie wtyczek i motywów to oddzielne ryzyko — nagłówki bezpieczeństwa zmniejszają skutki exploitacji, ale nie łatają luk w kodzie: Podatności w WordPress.
Podsumowanie
Nagłówki bezpieczeństwa to stosunkowo prosta do wdrożenia warstwa ochrony, która zmniejsza ryzyko skutecznych ataków XSS, clickjackingu i przejęcia połączenia. Warto zacząć od sprawdzenia stanu nagłówków na securityheaders.com, następnie wdrożyć X-Frame-Options i X-Content-Type-Options jako proste starty, a CSP wprowadzać ostrożnie — zaczynając od trybu raportowania.