Stosowanie nagłówków bezpieczeństwa WordPress, to jedno z wielu zabezpieczeń jakimi możesz wesprzeć swoją witrynę. To co wiele osób w nich ceni, to fakt, że pomagają uczynić projekty internetowe bezpieczniejszymi bez konieczności pisania kodu lub jego modyfikowania.

Nagłówki dają Ci wiele opcji wspierających bezpieczeństwo twojej strony, a dzięki ich względnej prostocie i skuteczności warto rozważyć ich wdrożenie. Nie jest to wymóg, ani rażący błąd jeśli pominiesz ten aspekt, ale za to zadbasz o inne środki bezpieczeństwa. Jednak nie jednej osobie ich zastosowanie pozytywnie się przysłużyło. Zainteresuj się tym tematem. Jeśli nie dziś, to być może za jakiś czas zechcesz z nagłówków bezpieczeństwa skorzystać.

Czym są nagłówki bezpieczeństwa HTTP

Gdy ktoś odwiedza Twoją stronę za pośrednictwem przeglądarki www, serwer odpowiada nagłówkami HTTP. Te nagłówki (w większości metadane) informują przeglądarkę, jak ma się zachowywać podczas komunikacji.

Nagłówki ochrony HTTP są podstawowym składnikiem bezpieczeństwa witryny. Po wdrożeniu czuwają nad nią i tym samym chronią Ciebie przed różnymi typami ataków jak XSS, wstrzyknięciem kodu i innymi zagrożeniami. Chronią Twoją witrynę przed intruzami i stanowią dodatkową warstwę zabezpieczeń, której konfiguracja nie jest specjalnie trudna.

Jest ich sporo, a każdy odpowiada za nieco inny obszar ochrony. Przyjrzyjmy się najważniejszym i sprawdzimy jak dodać je do witryny WordPress, po to aby była bezpieczniejsza.

X-Frame Options

Chroni odwiedzających przed atakami typu clickjacking, w przypadku których zawartość Twojej witryny może zostać załadowana do innej za pomocą iframe. Kiedy użytkownik kliknie łącze, które jego zdaniem jest bezpieczne, może nawigować po Twojej witrynie, co może być bardzo niebezpieczne w sytuacji gdy użytkownik zalogował się już do z twoich stron objętych ograniczeniami.

Przykładowa składnia:

X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
X-Frame-Options: ALLOW-FROM https://przykladowadomena.pl/

Parametr DENY blokuje rendering ramek (iframe)

Parametr SAMEORIGIN szuka niezgodności dotyczącej pochodzenia ramki i jeśli takie znajdzie, odmówi renderowania.

Ostatni przykład to parametr ALLOW-FROM, który zezwala na renderowanie ramek ładowanych z określonej domeny.

HTTP Strict Transport Security (HSTS)

Bardzo często spotykam się ze stronami, których właściciele nie korzystali z protokołu HTTPS (certyfikat SSL). Gdy jednak zrozumieli, że trzeba ten stan rzeczy zmienić, zrobili to instalując certyfikat. Niestety często na tym się kończy, a strona wciąż może być uruchamiana zarówno na protokole HTTP jak i HTTPS. Trochę bez sensu i nie specjalnie bezpieczne.

Wykorzystując HSTS nie pozwalasz na uruchomienie swojej strony na protokole HTTP. Serwer bezwzględnie wymusza na przeglądarce komunikację HTTPS.

Przykład składni:

Strict-Transport-Security: max-age=<czas-wygaśnięcia>
Strict-Transport-Security: max-age=<czas-wygaśnięcia>; includeSubDomains
Strict-Transport-Security: max-age=<czas-wygaśnięcia>; preload

X-XSS-Protection

Jak sama nazwa wskazuje, nagłówek X-XSS chroni przed atakami typu Cross-Site Scripting. Filtr XSS jest domyślnie włączony w przeglądarkach Chrome, IE i Safari i nie pozwala wczytać strony po wykryciu ataku typu cross-site scripting. Na przykład może to powstrzymać ataki XSS mające na celu kradzież plików cookie.

parametr 1 włącza filtr
parametr 0 wyłącza filtr

Przykład składni:

X-XSS-Protection: 0 
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=<reporting-uri>

Content-Security-Policy

Polityka bezpieczeństwa treści, to nagłówek bezpieczeństwa, który może pomóc zmniejszyć ryzyko XSS w nowoczesnych przeglądarkach, określając, które zasoby dynamiczne mogą być ładowane na stronie.

Akurat ten nagłówek może osobom początkującym sprawić trochę trudności. Bardzo łatwo ustawić go tak, że nie będą się ładowały css-y, js-y, media itd…

Czasem możemy sobie nawet nie zdawać sprawy z tego co i skąd ładuje się na naszej stronie. Może w tym pomóc wtyczka do przeglądarki Chrome. Po jej zainstalowaniu i uruchomieniu wystarczy poklikać po stronie, a dodatek w tym czasie będzie rejestrował dane na temat źródeł ładowanych zasobów. Na koniec wygeneruje nam praktycznie gotową składnię nagłówka do zastosowania, choć w praktyce nie zawsze się sprawdza i wymaga dodatkowych korekt.

Oto Bardzo prosty przykład składni dla tego nagłówka:

Content-Security-Policy "default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self';";

default-src określa standardowe zasady ładowania treści, takie jak żądania AJAX, ramki, HTML5, obrazy, js, css, czcionki i multimedia.

script-src definiuje, które źródła JS są uznawane za legalne.

connect-src dotyczy WebSocket, XMLHttpRequest (AJAX), EventSource.

img-src definiuje źródła obrazów.

style-src definiuje źródła arkuszy stylów.

X-Content-Type-Options

Ten nagłówek uniemożliwia przeglądarce interpretowanie plików jako czegoś innego niż to, co zostało zadeklarowane jako typ zawartości w nagłówkach HTTP. Ma wiele opcji konfiguracyjnych i wiele potencjalnych parametrów, ale najczęściej używany jest nosniff

Przykładowa składnia:

X-Content-Type-Options: nosniff

Jak wdrożyć nagłówki bezpieczeństwa na stronie WordPress

Jest kilka sposobów ich wdrożenia. Jeśli korzystasz z narzędzi takich jak Sucuri czy Cloudflare w kontekście ochrony strony firewallem na poziomie DNS, większość nagłówków możesz łatwo wyklikać. Jeśli nie korzystasz z tych usług wówczas możesz wprowadzić je do pliku .htaccess, a także użyć wtyczek WordPress 🙂

Jeśli korzystasz z Hostingu WordPress, nagłówek HSTS aktywujesz jednym kliknięciem w ustawieniach certyfikatu SSL. Co z pozostałymi?

Plik .htaccess

Plik ten znajdziesz w głównym katalogu instalacji WordPressa. Standardowo go nie ma, ale jeśli zmienisz ustawienia bezpośrednich odnośników, wówczas plik zostanie utworzony, a wewnątrz niego będą reguły związane z przepisywaniem adresów URL. Ich nie ruszasz 🙂 Pod nimi możesz dopisać swoje nagłówki, które będą wysyłane do przeglądarki.

Przykład składni pliku .htaccess:

<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header set X-Frame-Options DENY
</ifModule>

Wtyczka WordPress

Piszę o wtyczce na sam koniec, ponieważ zawsze namawiam do tego, aby instalować ich jak najmniej. W sytuacji gdy nie masz wyjścia i nie możesz sobie poradzić w żaden inny sposób, użyj wtyczek z repozytorium WordPress. Zajrzyj do przewodnika na temat tego jak zainstalować wtyczkę.

Rozszerzeń jest kilka, ale jeśli korzystasz z wtyczki do przekierowań „Redirection”, która ma dobrą renomę, to nie szukaj dalej.

Przejdź do ustawień wtyczki i kliknij w zakładkę Site

site

Następnie przewiń stronę na sam dół i tu znajdziesz sekcję przy pomocy, której możesz dodawać nagłówki.

Najpierw rozwiń listę i wybierz z niej opcję Add Security Presets

Wtyczka Redirect pozwala na tworzenie nagłówków HTTP

Gdy to zrobisz kliknij jeszcze raz na wyborze i dopiero wtedy pojawi się formularz z predefiniowanymi nagłówkami, które możesz modyfikować w razie potrzeby.

Definiowanie najważniejszych nagłówków bezpieczeństwa wtyczką WordPress

Jak sprawdzić czy nagłówki działają

Mozesz do tego celu użyć zewnętrznego serwisu, który połączy się z Twoją stroną i zweryfikuje jej nagłówki. Narzędzie nazywa się SecurityHeaders.

Uruchom, wpisz url swojej strony, kliknij w przycisk skanowania i poczekaj na wynik, który nie powinien wyglądać tak 🙂

Nie najlepszy wynik związany z nagłówkami HTTP

Podsumowanie

Nagłówki bezpieczeństwa, to dodatkowa warstwa zabezpieczenia Twojej strony. Uważaj jak będziesz je konfigurować, ponieważ bardzo łatwo popełnić błąd, który może spowodować, że strona przestanie się poprawnie ładować.

Może być tak, że spędzisz godziny nad dostrajaniem, zwłaszcza nagłówka Content-Security-Policy, co może być zniechęcające, ale jeśli w końcu Ci się uda, Twoja strona zdobędzie dodatkową tarczę ochronną, co myślę jest warte tego czasu.

Czy nagłówki są konieczne? I tak i nie. Jeśli dbasz o odpowiedni dobór wtyczek, motywu i przeprowadzasz regularne aktualizacje, to szanse na problem są niewielkie. Widziałem wiele witryn, które nagłówków nie używają i czują się bezpiecznie. Większość początkujących osób w ogóle nie ma świadomości ich istnienia i potrafią z tym żyć latami. Ty świadomość już masz, dlatego zastanów się czy nie warto poświęcić chwili swojego czasu i wdrożyć ten rodzaj ochrony.

Prawda jest taka, że im więcej środków zastosujesz tym mniejsze szanse na problemy w przyszłości. Decyzję pozostawiam Tobie.

Udostępnij

Bezpłatne informacje o nowościach JZS

Zapraszam Cię do grona Subskrybentów! Tysiące Czytelników już subskrybuje wiadomości z JZS.

W każdej chwili możesz zrezygnować z subskrypcji. Twój adres jest tu bezpieczny.

Ostatnio dodane oferty lifetime

Stwórz natywną aplikację mobilną dla swojego sklepu WooCommerce

Meta Box Lifetime

Dodawaj własne rodzaje treści i pola do WordPressa.

Zestaw narzędzi do optymalizacji SEO, wyszukiwania fraz i śledzenia rankingów w Google.

Może Cię Zainteresować

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *