Konfiguracja nagłówków bezpieczeństwa HTTP w WordPress

Opublikowany: 2022-02-23

Większość nowoczesnych przeglądarek obsługuje różne nagłówki bezpieczeństwa HTTP, aby poprawić bezpieczeństwo Twojej witryny WordPress, lepiej chronić odwiedzających przed atakami typu clickjacking, cross-site scripting i innymi typowymi atakami, a nawet poprawić prywatność odwiedzających Twoją witrynę online.

Ten artykuł zawiera przegląd tego, czym są te nagłówki zabezpieczeń HTTP, wyjaśnia, jak działają i jaki jest ich zakres. Wyjaśnia również, w jaki sposób możesz dodać te nagłówki bezpieczeństwa HTTP do swojej witryny, aby poprawić bezpieczeństwo swojej witryny WordPress.

Czym właściwie jest nagłówek bezpieczeństwa HTTP?

Nagłówki bezpieczeństwa HTTP to seria nagłówków HTTP 1 wymieniane między klientem sieciowym (przeglądarką) a serwerem sieciowym, które są używane do określenia ustawień związanych z bezpieczeństwem komunikacji HTTP między klientem sieciowym a serwerem. Włączenie nagłówków zabezpieczających w witrynie WordPress może poprawić odporność witryny na typowe ataki, w tym na ataki cross-site scripting (XSS) i clickjacking.

Jak nagłówki bezpieczeństwa HTTP mogą poprawić bezpieczeństwo WordPress

Nagłówki zabezpieczające HTTP mogą pomóc poprawić bezpieczeństwo witryny WordPress, instruując przeglądarkę, aby odpowiednio włączyła różne funkcje zabezpieczeń. W wielu przypadkach zaimplementowanie właściwych nagłówków jest trudną sprawą i może nawet przynieść inne wyniki (lub być całkowicie nieskuteczne) w starszych przeglądarkach, więc najlepiej jest wypróbować wszelkie zmiany w środowisku testowym lub pomostowym przed zastosowaniem jakichkolwiek zmian w działająca witryna WordPress.

Najczęściej używane nagłówki bezpieczeństwa HTTP

Które nagłówki do czego służą? Zanurzmy się w przegląd niektórych najważniejszych i najczęściej używanych nagłówków bezpieczeństwa HTTP.

Ścisłe bezpieczeństwo transportu

Nagłówek HTTP Strict-Transport-Security instruuje przeglądarkę, aby wymusić HTTP Strict Transport Security (HSTS) 2 . Nagłówek HSTS instruuje odwiedzającą przeglądarkę, aby zawsze uzyskiwała dostęp do witryny przez HTTPS (zamiast HTTP), nawet jeśli użytkownik (lub atakujący próbujący przeprowadzić atak Man-in-the-Middle) próbuje uzyskać dostęp do witryny przez HTTP, przeglądarka na siłę przełączy się na HTTPS, nawet jeśli HTTP jest niedostępny — do tego stopnia należy włączyć HSTS tylko wtedy, gdy masz włączony HTTPS i działa w pełni poprawnie bez problemów z mieszaną zawartością 3 .

Poniższy nagłówek odpowiedzi HTTP Strict Transport Security (HSTS) HTTP włącza HSTS na okres 1 roku (31536000 sekund).


Strict-Transport-Security: max-age=31536000

Polityka bezpieczeństwa treści

Nagłówek bezpieczeństwa HTTP Content-Security-Policy to nagłówek HTTP o dużej mocy i możliwości konfiguracji. Konfiguruje politykę bezpieczeństwa treści (CSP) przeglądarki, która jest zestawem funkcji bezpieczeństwa występujących w nowoczesnych przeglądarkach, która zapewnia dodatkową warstwę bezpieczeństwa, która pomaga wykrywać i łagodzić ataki, takie jak ataki Cross-Site Scripting (XSS) i wstrzykiwanie danych.

Polityka bezpieczeństwa treści (CSP) jest również bardzo trudna do uzyskania, ponieważ właściwe ustawienia CSP będą bardzo mocno zależne od danej witryny i powinny być dokładnie przetestowane przed wdrożeniem — tak bardzo, że ma siostrzaną politykę bezpieczeństwa treści -Tylko raport 4 Nagłówek HTTP używany tylko do testowania CSP.

Poniżej znajduje się przykład dość prostej polityki Content-Security Policy (CSP), która umożliwia ładowanie zasobów tylko ze źródła, z którego jest obsługiwana witryna.


Content-Security-Policy: default-src 'self'

Jednak polityka bezpieczeństwa treści (CSP) jest znacznie bardziej konfigurowalna niż pokazano w tym prostym przykładzie. CSP zawiera inne dyrektywy, takie jak script-src , style-src i img-src , które określają źródła, z których przeglądarka może ładować zasoby (na przykład CSS, obrazy i czcionki). Pełną listę sposobów konfiguracji dostawcy usług Kryptograficznych można znaleźć w skróconych wytycznych dotyczących polityki bezpieczeństwa treści.

X-Content-Type-Options

Nagłówek zabezpieczeń HTTP X-Content-Type-Options jest niestandardowym nagłówkiem szanowanym przez wszystkie główne przeglądarki, który zapobiega atakom Cross-site Scripting (XSS), które są powodowane przez sniffing typu MIME 5 . Gdy jest obecny, ten nagłówek informuje przeglądarkę, aby ściśle przestrzegała typów MIME zdefiniowanych w nagłówku HTTP Content-Type i że przeglądarka nie powinna próbować wykryć prawidłowego typu MIME dla samych danych odpowiedzi. Nagłówek ma jedną dyrektywę — nosniff.


X-Content-Type-Options: nosniff

Stare lub nieużywane nagłówki bezpieczeństwa HTTP

Istnieje również wiele starych i nieużywanych nagłówków zabezpieczeń HTTP. Nie są już używane lub nie działają, ponieważ zostały wprowadzone jako tymczasowe poprawki, eksperymenty, a nawet niestandardowe inicjatywy, które od tego czasu zostały albo całkowicie zdeprecjonowane, albo całkowicie zastąpione. Poniżej znajduje się lista tych nagłówków zabezpieczeń HTTP.

Nagłówki bezpieczeństwa HTTP zastąpione przez Content-Security-Policy

X-Frame-Opcje

Nagłówek zabezpieczeń HTTP X-Frame-Options jest obecnie przestarzałym nagłówkiem, który został po raz pierwszy wprowadzony przez Microsoft Internet Explorer (i zaadoptowany przez inne przeglądarki o różnym stopniu ujednolicenia i zgodności) w celu ochrony przeglądarek przed Cross-site Scripting (XSS), Clickjacking i inne ataki, które polegają na umieszczeniu strony internetowej wewnątrz elementu iframe.

Ten nagłówek został teraz zastąpiony dyrektywą frame-ancestors Content Security Policy (CSP). Zaleca się używanie CSP z dyrektywą frame-ancestors zamiast X-Frame-Options.

X-XSS-Ochrona

Nagłówek zabezpieczeń HTTP X-XSS-Protection był niestandardowym nagłówkiem wprowadzonym w celu włączenia lub wyłączenia ochrony przeglądarki przed atakami Cross-site Scripting (XSS). W praktyce ten nagłówek był często łatwy do ominięcia przez atakujących, w wyniku czego jest ignorowany przez większość nowoczesnych przeglądarek.

Przypinki klucza publicznego

Nagłówek zabezpieczeń HTTP Public-Key-Pins używany do konfigurowania funkcji zabezpieczeń przypinania kluczy publicznych (HPKP), która została wprowadzona w przeglądarkach Google Chrome i Firefox, aby zapobiec podszywaniu się pod certyfikat TLS. HPKP działało w taki sposób, że serwer sieciowy dostarczał przeglądarce zestaw kryptograficznych skrótów kluczy publicznych certyfikatu TLS używanej przez witrynę internetową, których przeglądarka z kolei używałaby do porównania z certyfikatami otrzymywanymi z serwera w kolejnych żądaniach. Problem polegał na tym, że zarządzanie HPKP było dość skomplikowane i często powodowało błędne konfiguracje, które mogły całkowicie uniemożliwić dostęp do strony internetowej — w związku z tym nie zaleca się już jej używania.

Dodawanie nagłówków bezpieczeństwa HTTP w WordPress

Nagłówki zabezpieczeń HTTP działają najlepiej, gdy są skonfigurowane na serwerze sieci Web lub, w stosownych przypadkach, w sieci dostarczania treści (CDN) lub zaporze aplikacji sieci Web. Dzięki temu mogą być wysyłane na każde żądanie. Alternatywnie, chociaż mniej idealne, możesz użyć wtyczki WordPress, aby ustawić te nagłówki za Ciebie.

Teraz, gdy omówiliśmy cel nagłówków bezpieczeństwa HTTP, oto kilka sposobów, w jakie można je włączyć w witrynie WordPress.

Dodawanie nagłówków bezpieczeństwa HTTP w WordPress za pomocą serwera Apache HTTP Server

Poniżej przedstawiono przykład konfiguracji serwera Apache HTTP Server wymaganej do włączenia ścisłych zabezpieczeń transportu HTTP (HSTS), opcji X-Content-Type-Options i prostej polityki zabezpieczeń zawartości.


<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000"
Header set X-Content-Type-Options "nosniff"
Header set Content-Security-Policy "default-src 'self'"
</ifModule>

Dodawanie nagłówków bezpieczeństwa HTTP w WordPress za pomocą Nginx

Podobnie poniżej znajduje się przykład konfiguracji dla Nginx wymaganej do włączenia ścisłych zabezpieczeń transportu HTTP (HSTS), opcji X-Content-Type-Options i prostych zasad bezpieczeństwa treści.


server {
add_header Strict-Transport-Security "max-age=31536000; always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
}

Dodawanie nagłówków bezpieczeństwa HTTP w WordPress za pomocą wtyczki

Alternatywnie, chociaż mniej skuteczne (ponieważ opiera się na samym WordPressie do modyfikowania nagłówków), użycie wtyczki WordPress może być najłatwiejszym sposobem dodania nagłówków bezpieczeństwa HTTP do witryny WordPress. Wtyczki, takie jak wtyczka Redirection, umożliwiają dodawanie niestandardowych nagłówków HTTP do Twojej witryny.

Jak sprawdzić nagłówki bezpieczeństwa HTTP dla strony internetowej?

Po dodaniu nagłówków zabezpieczeń HTTP w witrynie WordPress, upewnij się, że są one poprawnie skonfigurowane i działają zgodnie z oczekiwaniami. Najłatwiej to przetestować za pomocą bezpłatnego narzędzia o nazwie Security Headers 6 .

Korzystanie z narzędzia Security Headers jest tak proste, jak wpisanie adresu URL witryny i naciśnięcie przycisku „Skanuj”. Następnie otrzymasz ocenę od A+ do F wraz z wyjaśnieniem, w jaki sposób ta ocena została ustalona.

Referencje użyte w tym artykule [ + ]

Referencje użyte w tym artykule
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
2 https://owasp.org/www-project-secure-headers/#http-strict-transport-security
3 https://web.dev/co-jest-mieszane-tresci/
4 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
5 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing
6 https://securityheaders.com/