Chcesz ustawić nagłówki HTTP bezpieczeństwa w WordPress? X-Content-Type-Options, X-XSS-Protection, X-Frame-Options, Referrer-Policy, Permissions-Policy, Strict-Transport-Security
Po ostatnim warsztacie o bezpieczeństwie chciałem sprawdzić jak wykorzystać tę wiedzę w żywym projekcie.
Aby sprawdzić jak to działa, spróbowałem użyć dwóch scenariuszy:
-
https://developer.wordpress.com/docs/tutorials/add-http-headers/ - do zmiany nagłówków HTTP używając pliku custom-redirects.php
-
https://docs.wpvip.com/infrastructure/http-headers/ - do zmiany nagłówków HTTP używając pliku functions.php
Żaden z nich nie zadziałał po mojej stronie...
Ale w końcu znalazłem plugin: https://wordpress.org/plugins/http-headers/
Jak sprawdzić nagłówki HTTP
Aby sprawdzić ważne z punktu widzenia bezpieczeństwa nagłówki HTTP, dobrze jest użyć tej strony:
Strona daje informacje o używanych przez domenę nagłówkach bezpieczeństwa.
Punkt startowy dla piotr-sikora.com
Poniżej możesz zobaczyć, że skanowanie mojej strony wyglądało jak jedna wielka czerwona flaga.

Dodatkowo chciałem się upewnić, że moje nagłówki są dostępne, więc stworzyłem krótki Jupyter Notebook w Pythonie:
import requests
url = "https://piotr-sikora.com"
response = requests.get(url)
# Wypisz wszystkie nagłówki
for header in response.headers:
print(header, ":", response.headers[header])
# print(header)
Po uruchomieniu tego kodu lista moich nagłówków:
Server : nginx
Date : Sun, 01 Sep 2024 14:39:16 GMT
Content-Type : text/html; charset=UTF-8
Transfer-Encoding : chunked
Connection : keep-alive
X-Powered-By : PHP/8.1.29
Link : <https://piotr-sikora.com/wp-json/>; rel="https://api.w.org/"
Sprawdź czy securityheaders.com ma poprawne nagłówki HTTP
Syn szewca zawsze chodzi boso więc... sprawdźmy czy sama strona ma wszystkie nagłówki HTTP ustawione:

... i potraktujmy to jako cel dla strony.
Instalacja pluginu HTTP Headers i konfiguracja
Przede wszystkim zainstalowałem plugin WP:
https://wordpress.org/plugins/http-headers/
Po sprawdzeniu raportu zacząłem krok po kroku zmieniać odpowiednie nagłówki. Możesz zobaczyć ustawienia w pluginie:

Następnie wszedłem w pierwszy link - SECURITY:

Każdy wymieniony nagłówek ma zestaw opcji gotowych do użycia. Aby uzyskać do nich dostęp, kliknij 'Edit' na końcu linii. Na przykład nagłówek X-Frame-Options:

Nagłówek X-XSS-Protection:

Wynik końcowy - Ocena B
Po wszystkich zmianach możliwych z pluginem HTTP Headers WordPress raport z:

I ze skryptu Jupyter Notebook:
Server : nginxDate : Sun, 01 Sep 2024 15:26:25 GMTContent-Type : text/html; charset=UTF-8Transfer-Encoding : chunkedConnection : keep-aliveX-Frame-Options : SAMEORIGINX-XSS-Protection : 1; mode=blockStrict-Transport-Security : max-age=2592000Content-Security-Policy : default-src https:; script-src https:; style-src https:; img-src https:; connect-src https:; font-src https:; media-src https:; report-uri https:; child-src https:; form-action https:; frame-ancestors https:; object-src https:; frame-src https:; worker-src https:; manifest-src https:; navigate-to https:; prefetch-src https:; base-uri https:Referrer-Policy : same-originPermissions-Policy : autoplay=()X-Powered-By : PHP/8.1.29Link : https://piotr-sikora.com/wp-json/; rel="https://api.w.org/"
Podsumowanie: Zalecane sprawdzenie nagłówków HTTP bezpieczeństwa
- X-Content-Type-Options
- X-XSS-Protection
- X-Frame-Options
- Referrer-Policy
- Permissions-Policy
- Strict-Transport-Security







