Poradniki

Jak naprawić nagłówki bezpieczeństwa (CSP, HSTS)

Brak nagłówków bezpieczeństwa naraża aplikacje webowe na ataki cross-site scripting (XSS), clickjacking, wymuszenie obniżenia protokołu oraz przechwytywanie sesji.

Krótka odpowiedź

Wdróż Strict-Transport-Security z rocznym okresem ważności i preload, skonfiguruj restrykcyjną Content-Security-Policy, dodaj X-Content-Type-Options: nosniff oraz frame-ancestors 'none'.

Diagnostyka brakujących nagłówków odpowiedzi

Przed modyfikacją konfiguracji serwera sprawdź bieżące nagłówki odpowiedzi HTTP za pomocą curl -IL lub dedykowanego skanera. Ustal, na którym poziomie następuje terminacja TLS i generowanie nagłówków: na serwerze głównym (Nginx, Apache), proxy czy w sieci CDN. Upewnij się, że pośredniczące bramy nie usuwają nagłówków ochronnych.

Bezpieczna konfiguracja Strict-Transport-Security (HSTS)

Nagłówek HSTS wymusza na przeglądarkach wyłączne korzystanie z bezpiecznego protokołu HTTPS, zapobiegając atakom typu man-in-the-middle. Rozpocznij testy od wartości max-age=86400 (jeden dzień). Po upewnieniu się, że wszystkie subdomeny i zasoby działają poprawnie, wprowadź konfigurację produkcyjną: max-age=31536000; includeSubDomains; preload. Nigdy nie ustawiaj max-age=0 na produkcji.

Projektowanie skutecznej Content Security Policy (CSP)

CSP precyzyjnie definiuje, z jakich źródeł skrypty i zasoby mogą być uruchamiane w przeglądarce. W pierwszym kroku zastosuj nagłówek Content-Security-Policy-Report-Only z dyrektywą report-to, aby monitorować incydenty bez zakłócania działania strony. Zdefiniuj default-src 'self', script-src 'self' z wartościami nonce lub hashami zamiast 'unsafe-inline', wyłącz wtyczki przez object-src 'none' i wskaż frame-ancestors 'none'.

Ochrona przed clickjackingiem, MIME sniffingiem i wyciekiem referrera

Uniemożliw osadzenie serwisu w ukrytych ramkach iframe dzięki frame-ancestors 'none' w CSP oraz nagłówkowi X-Frame-Options: DENY dla starszych przeglądarek. Zablokuj niebezpieczne odgadywanie typów plików za pomocą X-Content-Type-Options: nosniff oraz chroń parametry adresów URL przy linkach zewnętrznych dzięki Referrer-Policy: strict-origin-when-cross-origin.

Wdrożenie na serwerze i weryfikacja poprawności

W Nginx reguły dodaje się w bloku server HTTPS dyrektywą add_header z parametrem always (np. add_header X-Content-Type-Options "nosniff" always;), co gwarantuje ich obecność także przy kodach błędów 4xx i 5xx. W Apache skorzystaj z modułu mod_headers i Header always set. Zweryfikuj konfigurację poleceniem nginx -t i przeładuj serwer.

Nagłówki bezpieczeństwa: HTTPS, CSP, ochrona ramek, MIME, referrer i izolacja przeglądarki.

Uruchom bezpłatny audyt →

Pytania

Często zadawane pytania

Czy można bezpiecznie włączyć HSTS preload od razu w środowisku produkcyjnym?

Nie. Najpierw przetestuj Strict-Transport-Security z max-age=86400 (jeden dzień) i upewnij się, że wszystkie subdomeny działają poprawnie po HTTPS, zanim zgrosisz domenę na hstspreload.org z max-age=31536000.

Jak wdrożyć Content Security Policy bez blokowania narzędzi analitycznych?

Rozpocznij od nagłówka Content-Security-Policy-Report-Only, aby zbierać raporty o naruszeniach, wskaż wymagane zewnętrzne domeny i użyj wartości nonce lub skrótów SHA-256 przed egzekwowaniem polityki.