Nagłówki bezpieczeństwa HTTP: minimum, które warto włączyć dziś
CSP, HSTS, X-Content-Type-Options i reszta: co realnie chroni, co jest przestarzałe i w jakiej kolejności wdrażać bez awarii.
Bezpieczeństwo · Opublikowano: 10 czerwca 2026 · 2 min czytania · Марк Лебедев
Nagłówki bezpieczeństwa to rzadki przypadek, gdy kilka linii w konfiguracji zamyka całe klasy ataków. I równie rzadki, gdy nieostrożne wdrożenie psuje serwis w sekundę. Kolejność jest więc równie ważna jak treść.
Zacznijcie od bezpiecznych
Te trzy można włączyć niemal bez ryzyka:
X-Content-Type-Options: nosniff — zabrania przeglądarce zgadywania typu treści. Zamyka scenariusz, w którym wgrany przez użytkownika „tekstowy" plik wykonuje się jako skrypt.
Referrer-Policy: strict-origin-when-cross-origin — przestaje wyciekać pełna ścieżka strony do cudzej analityki. Dziś to domyślne zachowanie większości przeglądarek, ale jawna deklaracja jest pewniejsza.
Strict-Transport-Security: max-age=31536000; includeSubDomains — HSTS, wymusza wyłącznie HTTPS. Uwaga: włączajcie tylko wtedy, gdy cały serwis i wszystkie subdomeny już działają po HTTPS. Szybki rollback jest niemożliwy — przeglądarki pamiętają nagłówek przez cały max-age. Zacznijcie od max-age=300, upewnijcie się, że nic nie padło, i podnoście.
CSP — najbardziej przydatny i najbardziej ryzykowny
Content-Security-Policy określa, skąd wolno ładować skrypty, style i obrazy. Blokuje większość XSS — i psuje serwis, jeśli politykę napisano na wyczucie.
Właściwa droga ma trzy kroki:
- Włączcie tryb obserwacji:
Content-Security-Policy-Report-Onlyz adresem raportów. Nic nie jest blokowane, ale widzicie, co zostałoby zablokowane. - Zbierzcie raporty przez dwa tygodnie i dopiszcie do polityki wszystko legalne — widżety, fonty, analitykę.
- Przełączcie na nagłówek produkcyjny.
Minimalna sensowna polityka dla serwisu bez skryptów inline:
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data:; frame-ancestors 'none'; base-uri 'self'
Dyrektywa frame-ancestors 'none' zastępuje przestarzały X-Frame-Options i zamyka clickjacking.
Czego już nie trzeba
X-XSS-Protection — przestarzały nagłówek, nowoczesne przeglądarki go ignorują, a w starszych sam bywał źródłem podatności. Feature-Policy zmienił nazwę na Permissions-Policy.
Jak sprawdzać
Nagłówki ustawia się na kilku poziomach — CDN, reverse proxy, aplikacja — i łatwo je zgubić albo zdublować przy zmianie infrastruktury. Sprawdzajcie nie konfigurację, lecz rzeczywistą odpowiedź na kilku typach URL: strona główna, adres z routingu SPA, plik statyczny, endpoint API. Różnice między nimi to najczęstsze znalezisko audytu.
I pilnujcie regresji: nagłówek przypadkiem zdjęty przy migracji na nowy CDN nie da znaku, dopóki nie będzie za późno.
Przeczytaj także
Sprawdź, ile z tego dotyczy Twojej strony
Darmowe skanowanie pokaże uszkodzone linki, błędy JS i problemy z wydajnością w minutę.