Co to są nagłówki bezpieczeństwa?
Nagłówki bezpieczeństwa to nagłówki odpowiedzi HTTP, które instruują przeglądarki, jak zachowywać się podczas obsługi treści witryny, zwiększając ochronę przed typowymi lukami w zabezpieczeniach internetowych. Nagłówki te pomagają zapobiegać atakom takim jak cross-site scripting (XSS), clickjacking, wstrzykiwanie treści i ataki na obniżenie protokołu. Prawidłowo skonfigurowane nagłówki bezpieczeństwa są niezbędne dla strategii obrony wielowarstwowej.Niezbędne nagłówki bezpieczeństwa
Nagłówek Strict-Transport-Security (HSTS)
Wymusza połączenia HTTPS:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
- Zapobiega atakom na obniżenie protokołu
- Blokuje mieszaną treść
- Chroni przed usuwaniem SSL
Polityka Content-Security-Policy (CSP)
Kontroluję ładowanie zasobów:
Content-Security-Policy: default-src 'self'; script-src 'self' trusted.com; style-src 'self' 'unsafe-inline'
- Zapobiega atakom XSS
- Kontroluje źródła skryptów
- Blokuje nieautoryzowane zasoby
Opcja X-Frame-Options
Zapobiega clickjackingowi:
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
- Blokuje witrynę przed wstawianiem w ramki
- Chroni przed przeformułowaniem interfejsu
Opcja X-Content-Type-Options
Zapobiega olfaktywności MIME:
X-Content-Type-Options: nosniff
- Wymusza poszanowanie przez przeglądarkę zadeklarowanego Content-Type
- Zapobiega wstrzykiwaniu skryptów poprzez błędnie interpretowane pliki
Dodatkowe nagłówki bezpieczeństwa
| Nagłówek | Cel | Przykładowa wartość |
|---|---|---|
| X-XSS-Protection | Filtr XSS (starszy) | 1; mode=block |
| Referrer-Policy | Kontrola informacji odsyłacza | strict-origin-when-cross-origin |
| Permissions-Policy | Ograniczenia funkcji | geolocation=(), camera=() |
| Cross-Origin-Opener-Policy | Izolacja procesów | same-origin |
| Cross-Origin-Embedder-Policy | Izolacja zasobów | require-corp |
Przykłady implementacji
Konfiguracja Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
Konfiguracja Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Nagłówki bezpieczeństwa i kondycja domeny
Dlaczego nagłówki są ważne dla domen
- Chronią użytkowników odwiedzających Twoją domenę
- Zapobiegają uszkodzeniu reputacji domeny
- Spełniają wymagania compliance
- Broniją przed typowymi atakami
Testowanie nagłówków bezpieczeństwa
Narzędzia do weryfikacji implementacji:
- securityheaders.com
- Mozilla Observatory
- SSL Labs
- Karta Network Chrome DevTools
Najlepsze praktyki
1. Zacznij od HSTS: Niezbędne do wymuszenia HTTPS
2. Implementuj CSP stopniowo: Zacznij w trybie tylko do raportu
3. Przetestuj dokładnie: Nagłówki mogą przerwać funkcjonalność
4. Użyj list wstępnie załadowanych: Prześlij na listy przeglądarek
5. Monitoruj naruszenia: Użyj punktów końcowych raportowania CSP
6. Regularne audyty: Wymagania bezpieczeństwa ewoluują
Typowe kryteria oceny
| Ocena | Typowe wymagania |
|---|---|
| A+ | Wszystkie krytyczne nagłówki, wstępne ładowanie HSTS |
| A | HSTS, CSP, X-Frame-Options, X-Content-Type |
| B | Brakuje niektórych nagłówków |
| C/D | Minimalne nagłówki bezpieczeństwa |
| F | Brak nagłówków bezpieczeństwa |
Nagłówki bezpieczeństwa reprezentują krytyczną warstwę bezpieczeństwa aplikacji internetowych, zapewniając wymuszaną przez przeglądarkę ochronę, która uzupełnia serwer bezpieczeństwa.