Lista kontrolna
Nagłówki bezpieczeństwa: przykład
Nagłówki to instrukcje, które serwer wysyła przeglądarce razem ze stroną. Mówią na przykład, skąd wolno ładować skrypty i czy stronę można osadzić w cudzej ramce. Tak wyglądają nagłówki tej strony (format pliku _headers na Netlify; na innych serwerach składnia jest inna, ale wartości te same):
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; object-src 'none' Strict-Transport-Security: max-age=63072000; includeSubDomains X-Content-Type-Options: nosniff X-Frame-Options: DENY Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: camera=(), microphone=(), geolocation=()
- Content-Security-Policy
Mówi przeglądarce, skąd wolno ładować skrypty, style i obrazy. Wstrzyknięty obcy skrypt się nie wykona.
- Strict-Transport-Security
Przeglądarka zawsze łączy się przez HTTPS, nawet gdy ktoś wpisze adres z http.
- X-Frame-Options i frame-ancestors
Blokują osadzenie strony w cudzej ramce, czyli podstawę ataku „kliknij tu, a naprawdę klikasz tam”.
- X-Content-Type-Options
Przeglądarka nie zgaduje typu pliku, więc obrazek nie zostanie wykonany jako skrypt.
Content-Security-Policy trzeba dopasować do strony: jeśli korzysta z zewnętrznych skryptów (analityka, czat, mapy), muszą znaleźć się na liście. Źle ustawiona polityka potrafi wyłączyć część strony, dlatego testuj ją przed wdrożeniem.
Darmowe narzędzia do sprawdzenia
- securityheaders.com
Ocena nagłówków bezpieczeństwa z wyjaśnieniem, czego brakuje.
- developer.mozilla.org/observatory
Szersza ocena konfiguracji HTTPS i nagłówków od Mozilli.
- Narzędzia do sprawdzania DMARC
Pokazują, czy rekordy SPF, DKIM i DMARC Twojej domeny są poprawne.
- PageSpeed Insights
Nie dotyczy bezpieczeństwa, ale przy okazji pokaże przestarzałe biblioteki i skrypty zewnętrzne.
Pojęcia z tego poradnika
- HTTPS
Szyfrowane połączenie między przeglądarką a stroną. Chroni dane przed podglądaniem i podmianą po drodze.
- HSTS
Nagłówek, który każe przeglądarce zawsze łączyć się ze stroną przez HTTPS, nawet gdy ktoś wpisze adres z http.
- Content-Security-Policy
Nagłówek, który mówi przeglądarce, skąd strona może ładować skrypty, style i obrazy. Blokuje wykonanie wstrzykniętych, obcych skryptów.
- Dwuetapowe logowanie (2FA)
Logowanie, które oprócz hasła wymaga drugiego potwierdzenia, na przykład kodu z aplikacji. Skradzione hasło nie wystarczy do przejęcia konta.
- Strona statyczna
Strona złożona z gotowych plików, bez bazy danych i panelu logowania na serwerze. Szybka i trudniejsza do zaatakowania, ale zmiany treści wymagają ponownego zbudowania.
Pytania i odpowiedzi
Czy mała strona firmowa w ogóle jest celem ataków?
Tak, ale zwykle nie osobiście. Automaty skanują cały internet w poszukiwaniu znanych dziur w popularnych wtyczkach i słabych haseł. Przejęta strona służy potem do rozsyłania spamu albo oszustw.
Czy strona statyczna jest bezpieczniejsza?
Ma mniejszą powierzchnię ataku, bo nie ma panelu logowania, bazy danych ani wtyczek do aktualizowania. Nadal trzeba chronić konta hostingu i domeny.
Co zrobić, gdy strona została przejęta?
Zmienić hasła i włączyć dwuetapowe logowanie na wszystkich kontach, odtworzyć stronę z czystej kopii, zaktualizować wszystko, a potem sprawdzić, którędy weszli, żeby nie wrócili tą samą drogą.
Źródła i dokumentacja
- OWASP Top 10: najczęstsze błędy bezpieczeństwa aplikacji webowychowasp.org
- MDN HTTP Observatory: test nagłówkówdeveloper.mozilla.org
- Security Headers: test nagłówkówsecurityheaders.com
- MDN: Content-Security-Policydeveloper.mozilla.org
- MDN: Strict-Transport-Securitydeveloper.mozilla.org
- Lista HSTS preloadhstspreload.org
- CERT Polska: zgłaszanie incydentów i ostrzeżeniacert.pl