Przejdź do treści

Sprawdzenie nagłówków bezpieczeństwa

Wpisz adres. Dostaniesz sześć nagłówków, które mają znaczenie, każdy z tym, co jego wartość naprawdę osiąga — a te, które są i nic nie robią, zostaną wskazane.

Dlaczego „jest” to nie ocena

Wszystkie inne sprawdzacze oceniają obecność: nagłówek jest, zielono. Ale nagłówek może być i nie robić zupełnie nic — max-age=0 to udokumentowany sposób wyłączenia HSTS, polityka w trybie Report-Only zgłasza i nie blokuje, a frame-ancestors sprawia, że przeglądarka całkowicie ignoruje twój X-Frame-Options. Wszystkie trzy czytają się jak zrobione. A to gorsze niż brak, bo nagłówek, który widać, to nagłówek, którego przestaje się sprawdzać.

Czego to nie mówi

Czy twoja witryna jest bezpieczna. Te nagłówki ograniczają to, co atak może zrobić, gdy już coś poszło źle; wobec błędu, który go wpuścił, nie robią nic. Perfekcyjna szóstka tutaj świetnie siedzi na nigdy nieaktualizowanym CMS-ie.

Jedno zdjęcie albo cały film

Tak witryna wygląda w tej chwili. Nadzór na nią patrzy — certyfikat, DNS, dostępność — i daje znać w dniu, w którym coś się zmieni, czyli zwykle w dniu, w którym ktoś wdrożył konfigurację, której nie przeczytał.

Zobacz monitoring →

Częste pytania

Pisze, że mój nagłówek nic nie robi. Przecież widzę go w odpowiedzi.
My też go widzimy — i o to właśnie chodzi. Trzy z nich stale występują obecne i bezczynne: HSTS z max-age=0 (to polecenie, żeby o nim zapomnieć), Content-Security-Policy wysyłana tylko jako Report-Only (zgłasza, nie blokuje) oraz X-Frame-Options na witrynie, której polityka niesie też frame-ancestors, a przeglądarka słucha tej drugiej. Wartość jest w raporcie; porównaj ją z tym, co sądziłeś, że ustawiłeś.
Czy potrzebuję wszystkich sześciu?
Pięć to po jednej linijce konfiguracji i nie ma powodu ich pomijać. Content-Security-Policy jest tą, która kosztuje prawdziwą pracę, bo surowa psuje skrypty w treści, dopóki ich nie poprawisz — i jest też jedyną, która ogranicza szkody z XSS, zamiast liczyć na zapobieżenie mu. Tę wdraża się najpierw w trybie Report-Only, czyta zgłoszenia, a potem włącza.
Dlaczego unsafe-inline to problem, skoro reszta jest zamknięta?
Bo to dokładnie to, czemu CSP ma zapobiegać. Z unsafe-inline w script-src wstrzyknięty znacznik script się wykona — a to jest cały atak. Wszystko inne, co polityka ogranicza, waży mniej niż ta jedna dziura. Wyjściem są nonce albo skróty, a strict-dynamic pozwala zachować unsafe-inline jako zabezpieczenie dla starych przeglądarek tak, że nie liczy się przeciwko tobie.