Część 7 serii „Bezpieczeństwo stron w UE: 10 kroków do lepszej oceny"
X-Content-Type-Options
Problem
Przeglądarki czasem próbują „odgadnąć" typ pliku — niezależnie od nagłówka Content-Type. Obraz, który w rzeczywistości zawiera JavaScript? Przeglądarka go wykonuje. To się nazywa sniffing MIME i jest bramą dla ataków iniekcji.
Rozwiązanie
X-Content-Type-Options: nosniff
Jeden nagłówek, jedna wartość. Przeglądarka akceptuje pliki tylko z zadeklarowanym typem MIME.
Wskaźnik wdrożenia: 27,7%. Prawie trzy czwarte witryn w UE jest podatnych na ataki związane z pomyleniem MIME.
Jak to ustawić
Nginx:
add_header X-Content-Type-Options "nosniff" always;
Apache:
Header always set X-Content-Type-Options "nosniff"
Jest tylko jedna prawidłowa wartość (nosniff), brak konfiguracji, brak efektów ubocznych. Nie ma powodu, żeby tego nie ustawiać.
Referrer-Policy
Problem
Gdy użytkownik kliknie link zewnętrzny na Twojej stronie, przeglądarka domyślnie wysyła pełny URL strony źródłowej w nagłówku Referrer. Może to ujawniać wrażliwe informacje:
https://twoja-domena.pl/panel?uzytkownik=12345&token=abchttps://twoja-domena.pl/admin/raporty/poufny-audythttps://twoja-domena.pl/wyszukiwanie?q=objawy+medyczne
Operator strony docelowej widzi pełny URL — z parametrami zapytania, ścieżkami i tokenami sesji.
Rozwiązanie
Referrer-Policy: strict-origin-when-cross-origin
Z tą polityką przeglądarka wysyła:
- Przy nawigacji do innej domeny: tylko origin (https://twoja-domena.pl), bez ścieżek
- W obrębie własnej domeny: pełny URL (przydatne do analityki)
- Przy przejściu z HTTPS na HTTP: nic
Wskaźnik wdrożenia: 13,1%.
Jak to ustawić
Nginx:
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Apache:
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Alternatywne polityki
| Polityka | Zachowanie | Zalecenie |
|---|---|---|
no-referrer |
Nigdy nie wysyła referrera | Zbyt restrykcyjne (psuje analitykę) |
origin |
Zawsze wysyła tylko origin | Dobre, ale traci wewnętrzne ścieżki |
strict-origin-when-cross-origin |
Origin między domenami, pełny wewnętrznie | Zalecane |
same-origin |
Pełny wewnętrznie, nic na zewnątrz | Dobre dla wrażliwych aplikacji |
Oba razem: Fragment konfiguracji Nginx
# Nagłówki bezpieczeństwa — gotowe do skopiowania
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Cztery nagłówki, cztery linie. W konfiguracji Nginx lub pliku include. W połączeniu z częściami 1-3 tej serii pokrywają sześć najważniejszych nagłówków bezpieczeństwa.
Sprawdź swoje nagłówki
W następnym tygodniu w części 8: Rekordy CAA — który urząd certyfikacji może wystawiać certyfikaty dla Twojej domeny?