Nagłówki bezpieczeństwa w WordPress – co to jest?

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 .htaccess za pomocą dyrektywy Header 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 .conf za pomocą dyrektywy add_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.