Generatory

Generator nagłówków bezpieczeństwa HTTP: HSTS, CSP i inne dla nginx i Apache

Wybierz ustawienia, a generator przygotuje nagłówki bezpieczeństwa HTTP (HSTS, CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy) jako konfigurację nginx lub Apache.

Obliczenia wykonuje Twoja przeglądarka. Wpisane dane nie są wysyłane na serwer.

Osadzanie w ramkach (frame-ancestors i X-Frame-Options)
Pozostałe
Permissions-Policy: wyłącz funkcje
    nginx (server lub location)
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    add_header Content-Security-Policy "default-src 'self'; frame-ancestors 'self'; form-action 'self'" 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=(), camera=(), microphone=()" always;
    add_header Cross-Origin-Opener-Policy "same-origin" always;
    Apache (mod_headers)
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    Header always set Content-Security-Policy "default-src 'self'; frame-ancestors 'self'; form-action 'self'"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"
    Header always set Cross-Origin-Opener-Policy "same-origin"
    Nagłówki HTTP
    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    Content-Security-Policy: default-src 'self'; frame-ancestors 'self'; form-action 'self'
    X-Frame-Options: SAMEORIGIN
    X-Content-Type-Options: nosniff
    Referrer-Policy: strict-origin-when-cross-origin
    Permissions-Policy: geolocation=(), camera=(), microphone=()
    Cross-Origin-Opener-Policy: same-origin

    Co robią poszczególne nagłówki

    NagłówekZalecenie OWASP
    Strict-Transport-Securitymax-age=63072000; includeSubDomains; preload, po zapoznaniu się z działaniem nagłówka
    Content-Security-Policypolityka dopasowana do serwisu; podstawowa: default-src 'self'; frame-ancestors 'self'; form-action 'self'
    X-Frame-OptionsDENY, a jeśli to możliwe, dyrektywa frame-ancestors w CSP
    X-Content-Type-Optionsnosniff i poprawny nagłówek Content-Type w całym serwisie
    Referrer-Policystrict-origin-when-cross-origin ustawione jawnie
    Permissions-Policywyłączenie funkcji, których serwis nie używa, np. geolocation=(), camera=(), microphone=()
    Cross-Origin-Opener-Policysame-origin
    X-XSS-Protectionnie ustawiać albo wyłączyć wartością 0

    HSTS: najpierw krótko, potem na długo

    HSTS każe przeglądarce łączyć się z domeną wyłącznie przez HTTPS przez czas podany wmax-age. OWASP ostrzega, że przy błędnej konfiguracji albo problemie z certyfikatem użytkownicy mogą nie mieć dostępu do strony aż do wygaśnięcia tego czasu. Serwis hstspreload.org zaleca zwiększać max-age etapami: 300 sekund, tydzień, 30 dni, sprawdzając na każdym etapie, czy wszystko działa. Do listy preload wbudowanej w przeglądarki można zgłosić domenę dopiero z max-age co najmniej 31536000 sekund, includeSubDomains ipreload. Generator ostrzega, jeśli zaznaczysz preload bez tych warunków.

    Content Security Policy

    OWASP opisuje CSP jako nagłówek złożony w konfiguracji i utrzymaniu. Podstawowa polityka z generatora pozwala ładować zasoby tylko z tej samej domeny, blokuje osadzanie strony w obcych ramkach i wysyłanie formularzy do innych serwisów. Według OWASP taka polityka nie pozwala też wykonywać skryptów i stylów wpisanych wprost w stronę. Jeśli serwis korzysta z zewnętrznych skryptów, czcionek czy obrazów, dopisz ich adresy w polach „Dodatkowe źródła”.

    Opcja „tylko raportowanie” wysyła politykę w nagłówkuContent-Security-Policy-Report-Only. Przeglądarka nie blokuje wtedy zasobów, tylko zgłasza naruszenia, więc można sprawdzić politykę bez ryzyka zepsucia strony.

    Uwagi do konfiguracji serwera

    • nginx: dyrektywy add_header są dziedziczone z poziomu wyżej tylko wtedy, gdy na bieżącym poziomie nie ma żadnej dyrektywy add_header. Parametralways dodaje nagłówek do każdej odpowiedzi, a nie tylko do tych z kodami 200, 201, 204, 206, 301, 302, 303, 304, 307 i 308.
    • Apache: generator używa Header always set z modułu mod_headers, który musi być włączony. Dokumentacja Apache wyjaśnia, że warunek always obejmuje także odpowiedzi z błędami i przekierowania generowane przez serwer.

    Najczęstsze pytania

    Gdzie wkleić wygenerowaną konfigurację nginx?

    Do bloku server albo location obsługującego HTTPS. Dokumentacja nginx zaznacza, że dyrektywy add_header są dziedziczone z wyższego poziomu tylko wtedy, gdy na bieżącym poziomie nie ma żadnej dyrektywy add_header, więc jeśli location ma własne add_header, nagłówki trzeba powtórzyć także w nim.

    Po co parametr always w nginx?

    Bez niego nginx dodaje nagłówek tylko do odpowiedzi z wybranymi kodami, m.in. 200, 204, 301, 302 i 304. Z parametrem always nagłówek trafia do każdej odpowiedzi, także do stron błędów.

    Czy od razu ustawiać HSTS na rok z preload?

    Serwis hstspreload.org zaleca zwiększać max-age stopniowo: 300 sekund, tydzień, a potem miesiąc, za każdym razem sprawdzając, czy strona działa. Do listy preload można zgłosić domenę dopiero z max-age co najmniej 31536000, includeSubDomains i preload.

    Dlaczego nie ma nagłówka X-XSS-Protection?

    OWASP zaleca go nie ustawiać albo wyłączyć wartością 0 i zamiast niego używać Content Security Policy, która blokuje skrypty wpisane wprost w stronę.

    Źródła

    1. HTTP Security Response Headers Cheat Sheet, OWASP
    2. Content Security Policy Cheat Sheet, OWASP
    3. HSTS Preload List Submission, hstspreload.org
    4. Content-Security-Policy-Report-Only, MDN
    5. Module ngx_http_headers_module, nginx
    6. Apache Module mod_headers, Apache Software Foundation
    • Generatory

      Cron

      Ustaw w formularzu, kiedy zadanie ma się uruchamiać, i skopiuj gotowe wyrażenie cron albo wklej własne, żeby sprawdzić, co oznacza i kiedy się wykona.

    • Generatory

      Hasła

      Wygeneruj losowe hasło o wybranej długości i zestawie znaków albo frazę z polskich słów. Hasła powstają w Twojej przeglądarce i nigdzie nie są zapisywane.

    • Generatory

      Skróty SHA i MD5

      Policz skrót SHA-256, SHA-384, SHA-512, SHA-1 lub MD5 dla tekstu albo pliku i porównaj go z sumą kontrolną podaną przez autora, np. przy pobieraniu obrazu ISO.

    • Generatory

      UUID

      Wygeneruj losowe identyfikatory UUID w wersji 4 albo uporządkowane czasowo w wersji 7 i sprawdź, jakiej wersji jest wklejony UUID oraz kiedy powstał UUID v7.

    Niezbędne (zawsze włączone). Pamięć przeglądarki przechowuje wybrany motyw, polubione artykuły i Twoją decyzję o zgodzie. Nie używamy do tego plików cookies.