Generator Content Security Policy (CSP)
Utwórz nagłówek Content-Security-Policy, tag meta i wersję Report-Only z szablonami, nonce i hashami SHA-256 oraz oceń istniejącą politykę.
Zacznij od szablonu
Hosty Google to przykłady z wytycznych Google dotyczących CSP dla tagu Google. Google co jakiś czas je zmienia: sprawdź aktualną dokumentację i usuń to, czego nie używasz.
W tagu <meta> przeglądarki ignorują frame-ancestors, report-uri, report-to i sandbox, a tryb Report-Only nie jest obsługiwany. Umieść tag na początku <head>: działa tylko na treść, która jest po nim.
Ocena tej polityki
Te testy nie wykryły słabych punktów.
Oceń istniejącą politykę
Jak zbudować politykę
- Wybierz punkt wyjścia w sekcji Zacznij od szablonu: Ścisła (nonce + strict-dynamic), Zablokowana strona statyczna, Typowa strona lub Typowa + Google Analytics / Ads. Edytor otwiera się z szablonem typowej strony.
- Dopasuj Dyrektywy. Każde pole przyjmuje źródła oddzielone spacjami; puste pole oznacza pominięcie dyrektywy.
- Za pomocą Szybkie dodawanie dopiszesz słowo kluczowe do wybranej Dyrektywy:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Przycisk Dodaj nonce wstawia losowy 128-bitowy nonce. - Aby zezwolić na konkretny skrypt inline bez
'unsafe-inline', wklej go (lub otaczający go HTML) w sekcji Hash skryptu lub stylu inline i kliknij Oblicz SHA-256 i dodaj. - Zaznacz upgrade-insecure-requests, jeśli niektóre stare adresy nadal używają
http://, i opcjonalnie podaj Adres URL endpointu raportów. - Skopiuj Nagłówek HTTP, Nagłówek Report-Only albo Tag HTML . Ocena tej polityki aktualizuje się na bieżąco podczas pisania.
Aby sprawdzić politykę, którą już masz, wklej ją w sekcji Oceń istniejącą politykę i kliknij Oceń politykę; przycisk Wczytaj do edytora przenosi ją do pól. Wszystko działa w twojej przeglądarce – nic, co wpiszesz, nie jest wysyłane na serwer.
Do czego służy Content Security Policy
CSP mówi przeglądarce, z jakich źródeł strona może ładować skrypty, style, obrazy, fonty, ramki i połączenia. Jej głównym zadaniem jest ograniczenie ataków cross-site scripting (XSS): nawet jeśli atakujący wstrzyknie kod do twojej strony, dobra polityka nie pozwoli wstrzykniętemu skryptowi się wykonać. Kontroluje też, kto może osadzać twoją stronę w ramce (frame-ancestors), dokąd mogą być wysyłane formularze (form-action) i na co może wskazywać <base> (base-uri).
Dyrektywy pobierania, takie jak img-src czy font-src, gdy ich brakuje, korzystają z default-src. base-uri, form-action i frame-ancestors nie mają takiej wartości zastępczej – dlatego ocena wymaga ich osobno.
Nonce, hashe i strict-dynamic
Lista dozwolonych hostów (script-src https://cdn.example.com) wygląda na bezpieczną, ale często da się ją obejść: duże domeny udostępniają endpointy JSONP i stare biblioteki, które atakujący może wykorzystać. Zespoły bezpieczeństwa przeglądarek zalecają ścisłą CSP: każdy prawidłowy <script> ma nonce generowany przez serwer dla każdej odpowiedzi albo jest dozwolony przez swój hash, a 'strict-dynamic' pozwala tym zaufanym skryptom ładować kolejne potrzebne skrypty. W takiej konfiguracji https: i 'unsafe-inline' są tylko zabezpieczeniem dla bardzo starych przeglądarek; nowoczesne je ignorują.
Nonce działa tylko wtedy, gdy zmienia się przy każdej odpowiedzi i jest nieprzewidywalny. Ten wstawiony przez Dodaj nonce to przykład: twój serwer lub framework musi generować własny. Hash obejmuje dokładne bajty kodu inline, więc nawet zmiana formatowania skryptu wymaga nowego hasha.
Nagłówek, Report-Only i tag meta
Kiedy tylko możesz, wysyłaj politykę jako nagłówek odpowiedzi HTTP. Najpierw wdróż ją jako Content-Security-Policy-Report-Only: przeglądarki zgłaszają naruszenia (w konsoli i do twojego endpointu, jeśli go ustawisz), niczego nie blokując, więc możesz poprawić strony przed włączeniem egzekwowania. Ustawienia raportów dodają report-uri dla starszych przeglądarek oraz report-to z nagłówkiem Reporting-Endpoints.
Wersja <meta http-equiv> przydaje się na hostingu statycznym, ale przeglądarki ignorują w niej frame-ancestors, report-uri, report-to i sandbox, a tag meta w trybie Report-Only nie istnieje. Narzędzie usuwa te dyrektywy z tagu i informuje o tym.
Najczęściej zadawane pytania
Czy 'unsafe-inline' w style-src to problem?
Jest mniej groźne niż w script-src i bardzo powszechne, bo wiele bibliotek ustawia style inline. Wstrzyknięty CSS nadal może zniekształcić stronę lub wyciągnąć dane, dlatego ocena oznacza to jako niską wagę.
Czy lista hostów Google Analytics jest kompletna?
To przykłady z wytycznych Google dotyczących CSP dla tagu Google. Google z czasem je zmienia i mogą być potrzebne domeny regionalne; sprawdź aktualną dokumentację Google i usuń to, czego nie używasz. Fragment inline gtag.js również wymaga nonce lub hasha.
Dlaczego polityka blokuje moje własne skrypty inline?
Gdy script-src jest ustawione bez 'unsafe-inline', każdy <script> inline i każdy atrybut onclick= jest blokowany. Przenieś kod do pliku albo dodaj nonce lub hash.
Czy CSP zastępuje escapowanie danych od użytkownika?
Nie. CSP to druga linia obrony. Nadal escapuj dane wyjściowe i waliduj dane wejściowe; polityka ogranicza szkody, gdy coś się prześlizgnie.
Czy mogę mieć kilka polityk?
Tak: jeśli strona otrzymuje kilka nagłówków CSP, zasób musi spełniać wszystkie. Do oceny wklejaj jedną politykę naraz.
Podobne narzędzia
- Generator przekierowań .htaccess Generuj przekierowania 301 i 302 dla .htaccess lub Nginx, wymuś HTTPS i www, przenieś domenę i popraw ukośniki, z wykrywaniem pętli i łańcuchów.
- Generator meta tagów Darmowy generator meta tagów: tytuł, meta opis, adres kanoniczny, robots i viewport, z kontrolą długości i poprawnie escapowanym kodem HTML.
- Generator hashy Generuj hashe MD5, SHA-1, SHA-256 i SHA-512 z tekstu lub plików dowolnej wielkości i sprawdzaj sumy kontrolne. Wszystko działa w twojej przeglądarce.
- Generator pliku robots.txt Utwórz poprawny plik robots.txt z grupami user-agent, regułami Allow i Disallow, mapami witryny i crawl-delay, z wykrywaniem typowych błędów.