
Nagłówki bezpieczeństwa HTTP: co ustawić, kiedy masz już SSL
Certyfikat SSL szyfruje ruch między przeglądarką a serwerem i na tym kończy się jego rola. Nie powie przeglądarce, że skryptów z obcych domen wykonywać nie wolno, że Twoja strona nie powinna dać się wczytać w cudzej ramce ani że następne wejście ma od razu pójść po HTTPS. Tym zajmują się nagłówki odpowiedzi HTTP, a ustawienie ich zajmuje kilka linijek w pliku konfiguracyjnym.
W pakietach hostingowych RapidDC certyfikat Let’s Encrypt jest w cenie (source: rapiddc.pl/hosting-www), więc pierwszy krok masz zwykle za sobą. Drugiego nikt nie zrobi za Ciebie.
Czego SSL nie załatwia
Kłódka w pasku adresu mówi o jednym: połączenie jest zaszyfrowane. Jeśli ktoś wstrzyknie na Twoją stronę skrypt przez podatną wtyczkę, ten skrypt wykona się po HTTPS równie dobrze jak po HTTP. Jeśli konkurencja opakuje Twój sklep w iframe na swojej domenie, certyfikat tego nie zauważy.
Nagłówki działają inaczej. Serwer dokłada je do każdej odpowiedzi, a przeglądarka traktuje je jako zasady, których ma się trzymać. To jedyne miejsce, gdzie możesz jej cokolwiek narzucić.
HSTS: wymuś HTTPS na poziomie przeglądarki
Strict-Transport-Security mówi przeglądarce: przez najbliższe X sekund łącz się z tą domeną wyłącznie po HTTPS, bez pytania. Przekierowanie 301 z HTTP na HTTPS zostawia jedno pierwsze żądanie po nieszyfrowanym kanale. HSTS zamyka tę szparę od drugiej wizyty.
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Jedna pułapka: includeSubDomains obejmuje wszystkie subdomeny, także te, na których nie masz certyfikatu. Jeśli masz starą subdomenę z panelem bez SSL, przestanie się otwierać. Zacznij od krótkiego max-age, na przykład 300 sekund, sprawdź, czy nic nie padło, i dopiero potem podnieś do roku.
Content-Security-Policy: najtrudniejszy, ale najskuteczniejszy
CSP to lista domen, z których przeglądarka ma prawo wczytywać skrypty, style, obrazki i czcionki. Wszystko spoza listy jest blokowane. To realna ochrona przed XSS i przed skryptami doklejonymi przez zainfekowaną wtyczkę.
Jest też nagłówkiem, który najłatwiej położy stronę. Typowy WordPress z kilkoma wtyczkami wczytuje zasoby z Google Fonts, z CDN-a, z narzędzia analitycznego i z paru miejsc, o których nie pamiętasz. Restrykcyjne CSP wyłączy połowę z nich.
Dlatego zacznij od trybu raportowania:
Header always set Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data:; script-src 'self'"
W tej wersji przeglądarka niczego nie blokuje, tylko zgłasza naruszenia w konsoli. Pozbieraj je z kilku dni, dopisz domeny, których naprawdę używasz, i dopiero wtedy zmień nazwę nagłówka na Content-Security-Policy.
Cztery nagłówki, które ustawisz raz i zapomnisz
Te nie wymagają testów. Wartości poniżej są bezpieczne dla praktycznie każdej strony firmowej i sklepu:
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 "camera=(), microphone=(), geolocation=()"
nosniffkaże przeglądarce wierzyć deklarowanemu typowi pliku, zamiast zgadywać po zawartości. Zgadywanie bywa wykorzystywane do wykonania obrazka jako skryptu.SAMEORIGINpozwala wczytać Twoją stronę w ramce tylko na Twojej własnej domenie. Blokuje clickjacking.Referrer-Policyogranicza to, co Twoja strona zdradza o sobie przy wyjściu na obcy adres. Przy adresach z parametrami ma to znaczenie także dla RODO.Permissions-Policywyłącza API, których strona nie używa. Kamera i mikrofon w sklepie są zbędne, więc niech będą zablokowane.
Gdzie to wpisać
Na hostingu współdzielonym nagłówki wstawia się do pliku .htaccess w katalogu strony. Jeśli nie pracowałeś z nim wcześniej, mamy osobny poradnik: czym jest plik .htaccess i jakie reguły warto w nim trzymać. Pliki edytujesz w menedżerze plików DirectAdmin, który dostajesz w każdym pakiecie hostingu RapidDC.
Dyrektywy Header wymagają włączonego modułu mod_headers. Nie zgaduj, czy go masz: wpisz jeden nagłówek, odśwież stronę i sprawdź, czy się pojawił. Jeśli zamiast strony zobaczysz błąd 500, modułu nie ma i zostaje poziom aplikacji, czyli funkcja header() w PHP albo wtyczka.
Na serwerze VPS masz pełną kontrolę. W Nginksie to dyrektywa add_header w bloku server, w Apache’u ta sama składnia co wyżej, tylko w konfiguracji hosta wirtualnego, nie w .htaccess.
Jak sprawdzić, czy działa
Trzy sposoby, od najszybszego:
curl -I https://twojadomena.plwypisze wszystkie nagłówki odpowiedzi. Jedna komenda, pełna lista.- W przeglądarce: DevTools, zakładka Network, pierwszy wpis na liście, sekcja Response Headers.
- Zewnętrzny skaner, na przykład securityheaders.com, który dodatkowo oceni konfigurację i wskaże braki.
Po wdrożeniu CSP przejdź jeszcze przez stronę z otwartą konsolą i kliknij to, co klika użytkownik: formularz, koszyk, galerię. Zablokowany skrypt zgłosi się w konsoli, nie w raporcie z zewnętrznego narzędzia.
Podsumowanie
Nagłówki to najtańsza warstwa zabezpieczeń, jaką masz: żadnej wtyczki, żadnego abonamentu, kilka linijek tekstu. Zrób to w tej kolejności: cztery nagłówki z gotowymi wartościami od razu, HSTS z krótkim max-age na próbę, CSP w trybie Report-Only na kilka dni.
Jeśli nie masz jeszcze certyfikatu, od niego zacznij, bo HSTS bez SSL tylko zablokuje stronę. Dlaczego certyfikat jest dziś obowiązkowy, opisaliśmy w tekście o tym, dlaczego Twoja strona musi mieć certyfikat SSL. Potem wystarczy pakiet hostingu z DirectAdminem i dostęp do .htaccess.
FAQ – najczęściej zadawane pytania o nagłówki bezpieczeństwa HTTP
Czy nagłówki bezpieczeństwa wpływają na SEO?
Bezpośrednio nie, Google nie ustala pozycji na podstawie samych nagłówków. Pośrednio tak: zhakowana strona wypada z wyników, a HSTS eliminuje jedno przekierowanie przy wejściu, co nieznacznie skraca czas pierwszej odpowiedzi.
Czy mogę ustawić CSP na WordPressie bez ryzyka, że strona przestanie działać?
Tak, jeśli zaczniesz od Content-Security-Policy-Report-Only. W tym trybie przeglądarka wypisuje naruszenia w konsoli, ale niczego nie blokuje. Po kilku dniach zbierania danych wiesz, które domeny dopisać, i dopiero wtedy włączasz tryb blokujący.
Potrzebuję VPS-a, żeby ustawić nagłówki?
Nie. Na hostingu współdzielonym wystarczy plik .htaccess i włączony moduł mod_headers. VPS daje więcej, bo konfigurujesz serwer na poziomie hosta wirtualnego i możesz ustawić nagłówki globalnie dla wszystkich stron na maszynie.
Co zrobić, gdy po dodaniu nagłówków strona zwraca błąd 500?
Usuń dodane linijki i wracaj po jednej. Błąd 500 po dyrektywie Header prawie zawsze oznacza brak modułu mod_headers albo literówkę w składni. Dokładny powód znajdziesz w logu błędów serwera, dostępnym w panelu.
Artykuł powstał z wykorzystaniem narzędzi sztucznej inteligencji (AI) pod nadzorem zespołu RapidDC. Grafika ilustracyjna została wygenerowana przez AI.
