Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator nagłówków bezpieczeństwa Nginx

HSTS, X-Frame-Options, CSP, Referrer-Policy, Permissions-Policy i COOP z walidacją składni i plikiem .conf

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
HSTS – wymuszenie HTTPS

31536000 = 1 rok, 63072000 = 2 lata. Więcej wartości w ściądze pod narzędziem.

Podstawowe nagłówki
CSP i uprawnienia

Dyrektywy oddzielaj średnikiem, słowa kluczowe w apostrofach: 'self', 'none'. Puste pole = bez CSP.

() = zablokowane, (self) = tylko Twoja domena. Elementy oddzielaj przecinkiem.

Zalecane nagłówki bezpieczeństwa

6 z 6 OK

Konfiguracja zawiera wszystkie 6 podstawowych zabezpieczeń. Wklej ją do bloku server i sprawdź poleceniem nginx -t.

Dyrektywy Nginx

7

HSTS

365 dni

CSP

wymuszana

Uwagi

0
OK

Konfiguracja Nginx

# HSTS: tylko HTTPS przez 365 dni (także subdomeny) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # Blokada osadzania strony w obcych ramkach (clickjacking) add_header X-Frame-Options "SAMEORIGIN" always; # Zakaz zgadywania typu MIME przez przeglądarkę add_header X-Content-Type-Options "nosniff" always; # Ile adresu strony wysyłać w nagłówku Referer add_header Referrer-Policy "strict-origin-when-cross-origin" always; # Dostęp do funkcji przeglądarki (kamera, mikrofon, lokalizacja…) add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; # CSP: skąd wolno ładować skrypty, style i inne zasoby add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'" always; # Ukrycie numeru wersji Nginx server_tokens off;
829 znaków · 91 słów · 15 linii
Plik do katalogu np. /etc/nginx/snippets/ i dołączenia przez include.

Co warto poprawić

  • OK: nie znaleziono typowych słabych punktów w tej konfiguracji.
Co zawiera konfiguracja
NagłówekW konfiguracjiChroni przed
Strict-Transport-Security Tak, 365 dni Degradacja do HTTP, przechwycenie ruchu
X-Frame-Options SAMEORIGIN Clickjacking (osadzanie w ramce)
X-Content-Type-Options nosniff Wykonanie pliku o podmienionym typie
Referrer-Policy strict-origin-when-cross-origin Wyciek adresów i parametrów do innych stron
Permissions-Policy Tak Nadużycie kamery, mikrofonu, lokalizacji
Content-Security-Policy Tak, 3 dyrektyw XSS, wstrzyknięte skrypty i style
Cross-Origin-Opener-Policy Nie (opcjonalny) Ataki przez okna otwarte z innej domeny
server_tokens off Ujawnienie wersji serwera

Ściąga: max-age HSTS w sekundach

Typowe wartości max-age przy stopniowym wdrażaniu HSTS
Okresmax-age (s)Kiedy używać
5 minut 300 Pierwszy test po włączeniu HTTPS
1 tydzień 604800 Drugi etap wdrażania
30 dni 2592000 Trzeci etap wdrażania
1 rok 31536000 Minimum dla listy preload
2 lata 63072000 Docelowa wartość dla stabilnego HTTPS

Gdzie wkleić i pułapka dziedziczenia

Dyrektywy wstaw do bloku server (HTTPS). Nginx dziedziczy add_header z wyższego poziomu tylko wtedy, gdy na bieżącym nie ma żadnego add_header. Jeśli location dodaje własny nagłówek, nagłówki z server w nim znikają. Najprościej zapisać je w pliku i dołączać przez include w każdym takim miejscu. Po zmianie: nginx -t, potem przeładowanie.

Po co parametr always

Bez always Nginx dodaje nagłówek tylko do odpowiedzi z kodami 200, 201, 204, 206, 301, 302, 303, 304, 307 i 308. Z always trafia też do odpowiedzi z błędami (np. 404, 500), więc ochrona obejmuje każdą odpowiedź serwera. Dlatego generator dodaje go do każdego nagłówka.

HSTS i preload ostrożnie

Przeglądarka zapamiętuje HSTS na czas max-age i do tego czasu nie wejdzie na stronę po HTTP. includeSubDomains obejmuje każdą subdomenę, więc wszystkie muszą mieć ważny certyfikat. Zacznij od krótkiego max-age i wydłużaj go etapami. Wpis na listę preload trudno cofnąć: wymaga max-age co najmniej roku i includeSubDomains.

CSP: najpierw tryb raportowania

Zbyt ostra polityka potrafi wyłączyć skrypty, czcionki czy analitykę. Włącz Report-Only, sprawdź w konsoli przeglądarki, co jest blokowane, i dopiero wtedy przełącz na wymuszanie. 'unsafe-inline' w script-src znosi większość ochrony przed XSS. Nagłówek X-XSS-Protection jest przestarzały, dlatego generator go nie dodaje.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator nagłówków bezpieczeństwa Nginx

Nagłówki bezpieczeństwa Nginx to kilka dyrektyw add_header w bloku server, które chronią użytkowników przed przechwyceniem połączenia, clickjackingiem, XSS i wyciekiem adresów URL. Generator składa je z formularza, sprawdza składnię CSP i Permissions-Policy, ocenia konfigurację w skali 6 podstawowych zabezpieczeń i pozwala pobrać gotowy plik security-headers.conf.

Najważniejsze nagłówki

NagłówekChroni przed
Strict-Transport-Securitydegradacją do HTTP (MITM)
X-Frame-Optionsclickjackingiem
X-Content-Type-OptionsMIME sniffing
Content-Security-PolicyXSS, wstrzykiwaniem zasobów
Referrer-Policywyciekiem adresów URL
Permissions-Policydostępem do API przeglądarki (kamera, mikrofon, lokalizacja)
Cross-Origin-Opener-Policyatakami przez okna otwarte z innej domeny (opcjonalny)
server_tokens offujawnieniem wersji Nginx w nagłówku Server i na stronach błędów

Przykład: konfiguracja z zestawu „Zalecany”

Tak wygląda wynik ustawień domyślnych po wyłączeniu komentarzy. Generator liczy tu 7 dyrektyw, pokazuje HSTS na 365 dni i ocenia pokrycie na 6 z 6:

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 Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'" always;
server_tokens off;

Zestaw „Restrykcyjny” podnosi max-age do 63072000 s (730 dni), ustawia DENY, no-referrer, COOP same-origin i CSP z object-src 'none' oraz frame-ancestors 'none'. „Łagodny” zostawia w CSP 'unsafe-inline' i 'unsafe-eval', więc generator od razu ostrzega, że taka polityka słabo chroni przed XSS.

Uwagi

  • always dodaje nagłówek także do odpowiedzi błędów,
  • HSTS włączaj dopiero, gdy HTTPS działa poprawnie — jest „lepki” w przeglądarce,
  • CSP testuj najpierw w trybie Content-Security-Policy-Report-Only (w generatorze: pole „Tryb Report-Only”),
  • nagłówka X-XSS-Protection generator nie dodaje, bo jest przestarzały; ochronę przed XSS daje CSP.

Jak działa generator nagłówków bezpieczeństwa Nginx

Generator zbiera wartości z formularza i zamienia je na gotowy blok dyrektyw add_header. Każda linia to jeden nagłówek: nazwa, wartość w cudzysłowie oraz flaga always, która sprawia, że nagłówek trafia także do odpowiedzi błędów. Na końcu może dojść server_tokens off, a nad każdą dyrektywą opcjonalny komentarz po polsku. Wynik kopiujesz albo pobierasz jako security-headers.conf, zapisujesz np. w /etc/nginx/snippets/ i dołączasz przez include.

Przed zbudowaniem konfiguracji narzędzie sprawdza dane. W CSP wykrywa fragmenty bez nazwy dyrektywy, nieznane nazwy (zwykle literówki), powtórzone dyrektywy, słowa kluczowe bez apostrofów (self zamiast 'self'), brak default-src oraz 'unsafe-inline', 'unsafe-eval' i zbyt szerokie źródła skryptów, jak *, https: czy data:. W Permissions-Policy pilnuje formatu funkcja=(…) z przecinkami. Opcję preload odrzuca, gdy max-age jest krótszy niż 31536000 s albo wyłączono includeSubDomains. Ostrzega też przed znakiem $, który Nginx traktuje jako zmienną.

Najważniejsza zasada mechanizmu siedzi w samym Nginx, nie w generatorze: dyrektywy add_header dziedziczą się z poziomu nadrzędnego tylko wtedy, gdy na niższym poziomie nie zdefiniowano ani jednej takiej dyrektywy. Jeśli w bloku location pojawi się choćby jedno add_header, nagłówki ustawione w server przestają tam obowiązywać. Dlatego wygenerowany zestaw najlepiej trzymać w osobnym pliku i dołączać przez include w każdym bloku, który dodaje własne nagłówki.

Wartość max-age w HSTS liczy się w sekundach i jest odświeżana przy każdym poprawnym żądaniu po HTTPS — im większa liczba, tym dłużej przeglądarka pamięta zakaz łączenia się po HTTP. Wzór jest prosty: max-age podzielone przez 86400 daje liczbę dni. Dla 31536000 sekund to dokładnie 365 dni, dla 63072000 – 730 dni. Ściągę z typowymi wartościami znajdziesz bezpośrednio pod formularzem.

Przykład krok po kroku: od formularza do działającej konfiguracji

  1. Wybierasz zestaw „Zalecany”. HSTS dostaje wartość max-age=31536000; includeSubDomains, czyli 31536000 / 86400 = 365 dni, i tyle pokazuje kafelek HSTS.
  2. Jeśli HTTPS dopiero uruchamiasz, zmieniasz max-age na 300 (5 minut) albo 604800 (7 dni). Generator doda uwagę, że wartość krótsza niż rok nadaje się na testy, ale jest za krótka dla listy preload.
  3. Zaznaczasz tryb Report-Only. Nagłówek zmienia się na Content-Security-Policy-Report-Only, a ocena spada do 5 z 6, bo taka polityka tylko zgłasza naruszenia i niczego nie blokuje.
  4. Klikasz „Generuj nagłówki”, pobierasz security-headers.conf do /etc/nginx/snippets/ i dopisujesz w bloku server linię include snippets/security-headers.conf;. Uruchamiasz nginx -t i przeładowujesz usługę, np. systemctl reload nginx.
  5. Sprawdzasz realną odpowiedź serwera poleceniem curl -I https://twojadomena.pl. Powinny być widoczne wszystkie wygenerowane nagłówki, a nagłówek Server bez numeru wersji.
  6. Po kilku dniach przeglądasz naruszenia CSP w konsoli przeglądarki i dopisujesz brakujące źródła skryptów, stylów i fontów. Gdy naruszeń nie ma, wyłączasz Report-Only i etapami wydłużasz max-age: 30 dni, rok, docelowo 2 lata (63072000 s).

Tabela referencyjna: nagłówek, wartość, co sprawdzić przed włączeniem

NagłówekWartość domyślna w generatorzeCo sprawdzić przed włączeniem
Strict-Transport-Securitymax-age=31536000; includeSubDomainsczy wszystkie subdomeny mają ważny certyfikat i odpowiadają po HTTPS
X-Frame-OptionsSAMEORIGINczy strona nie jest osadzana w ramce na innej domenie, np. przez widget lub panel klienta
X-Content-Type-Optionsnosniffczy serwer wysyła poprawne typy dla plików CSS i JavaScript
Content-Security-Policydefault-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'skąd ładowane są skrypty, style, fonty, obrazy i ramki oraz czy używasz kodu inline
Content-Security-Policy-Report-Onlyta sama polityka w trybie raportowaniaczy naruszenia widać w konsoli przeglądarki lub w endpoincie z report-uri
Referrer-Policystrict-origin-when-cross-originczy zewnętrzna analityka lub API potrzebują pełnego adresu w nagłówku Referer
Permissions-Policygeolocation=(), microphone=(), camera=()czy strona lub osadzone ramki nie korzystają z tych API przeglądarki
Cross-Origin-Opener-Policybrak (do wyboru same-origin, same-origin-allow-popups, unsafe-none)czy logowanie lub płatności nie otwierają okienek, które muszą komunikować się ze stroną

Praktyczne wskazówki wdrożenia

  • Trzymaj nagłówki w jednym pliku. Zestaw z generatora dołącz przez include w bloku server i powtórz ten sam include w każdym bloku location, który ma własne add_header, bo inaczej nagłówki z server w nim znikną.
  • Wdrażaj warstwami. Zacznij od nagłówków, które nie zmieniają działania strony, potem dodaj ograniczenia ramek, a na końcu HSTS i politykę treści — każdy z tych etapów może ujawnić inny problem.
  • HSTS wprowadzaj stopniowo: zacznij od krótkiego max-age, np. 604800, czyli 7 dni licząc po 86400 sekund na dobę, i wydłuż go do 31536000 dopiero wtedy, gdy HTTPS działa stabilnie na wszystkich hostach.
  • Sprawdzaj odpowiedź, nie tylko konfigurację. Nagłówki mogą zostać nadpisane przez aplikację, reverse proxy lub CDN, dlatego po każdym wdrożeniu zrób curl -I i porównaj wynik z plikiem.

Ograniczenia narzędzia

  • Nie zna Twojej infrastruktury. Generator nie sprawdzi, czy przed Nginx stoi proxy lub CDN, który dokłada albo nadpisuje nagłówki, ani czy aplikacja wysyła własne.
  • Nie ustali listy dozwolonych źródeł. Sprawdza składnię CSP, ale nie wie, z jakich domen ładujesz skrypty, style czy fonty, więc zbyt wąska polityka zablokuje działające elementy strony.
  • Nie obsługuje wartości dynamicznych. Polityka treści oparta na nonce wymaga generowania losowej wartości przy każdym żądaniu po stronie aplikacji, czego statyczna konfiguracja nie zrobi.
  • Nie weryfikuje subdomen i certyfikatów. Nie sprawdzi, czy wszystkie hosty objęte includeSubDomains mają poprawny certyfikat i odpowiadają po HTTPS.
  • Nie usuwa podatności. Nagłówki ograniczają skutki niektórych ataków, ale nie naprawiają błędów w kodzie, słabego uwierzytelniania ani wycieków danych.

Najczęstsze pytania

Czy nagłówki spowalniają stronę?

Nie — to kilka bajtów w odpowiedzi. Efekt jest pomijalny.

Dlaczego po włączeniu CSP strona przestała działać?

Najczęściej polityka blokuje skrypty lub style, których źródła nie zostały dopisane. Włącz tryb Report-Only, zbierz listę naruszeń z konsoli przeglądarki i dopiero potem wymuszaj reguły.

Gdzie wkleić wygenerowaną konfigurację w Nginx?

Do bloku server (HTTPS) danej domeny, bezpośrednio albo przez include pobranego pliku security-headers.conf. Po zapisie sprawdź składnię poleceniem nginx -t i przeładuj usługę.

Czy includeSubDomains jest bezpieczne?

Tylko wtedy, gdy każda subdomena ma ważny certyfikat i obsługuje HTTPS. Jeśli któraś działa wyłącznie po HTTP, przeglądarki odetną do niej dostęp na czas zapisany w max-age.

Czy dodawać nagłówek X-XSS-Protection?

Nie. To przestarzały nagłówek, który nowe przeglądarki ignorują, dlatego generator go pomija. Przed XSS chroni Content-Security-Policy bez 'unsafe-inline' w skryptach.

Jak potwierdzić, że nagłówki faktycznie działają?

Sprawdź surową odpowiedź serwera poleceniem curl -I albo zakładką sieci w narzędziach deweloperskich przeglądarki. Brak nagłówka oznacza, że konfiguracja nie została wczytana albo nadpisał ją blok location, aplikacja lub CDN.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!