
Jak ukryć wersję WordPressa i zabezpieczyć nagłówki HTTP? (Poradnik 2026)
Spis treści
W świecie cyberbezpieczeństwa istnieje pojęcie “Rekonesansu”. Zanim haker (lub zautomatyzowany bot) zaatakuje Twoją stronę, najpierw ją skanuje. Szuka najsłabszych ogniw. Jeśli Twoja witryna dumnie ogłasza w kodzie źródłowym: “Cześć! Działam na WordPressie 5.8.1!”, to praktycznie rozwijasz przed włamywaczem czerwony dywan. Bo on dokładnie wie, jakie luki istniały w wersji 5.8.1.
W tym obszernym poradniku (hardening guide), wyjdziemy poza proste wtyczki typu “Hide My WP”. Zajmiemy się Security by Obscurity (i wyjaśnimy, dlaczego to tylko pierwsza linia obrony), a następnie wdrożymy prawdziwe, serwerowe zabezpieczenia za pomocą Nagłówków HTTP.
Część 1: Problem “Generatora”
Domyślnie, WordPress wstrzykuje do sekcji <head> taki meta tag:
<meta name="generator" content="WordPress 6.7.1" />
Jest to bezużyteczne dla SEO i niebezpieczne dla bezpieczeństwa.
Dodatkowo, wersja doklejana jest do plików CSS i JS jako parametr:
style.css?ver=6.7.1
Rozwiązanie (Snippet PHP)
Nie instaluj do tego ciężkiej wtyczki. Dodaj ten kod do functions.php:
/**
* Usuń wersję WordPressa z nagłówka i kanałów RSS
*/
remove_action('wp_head', 'wp_generator');
remove_action('rss2_head', 'the_generator');
remove_action('commentsrss2_head', 'the_generator');
remove_action('wp_head', 'wlwmanifest_link'); // Windows Live Writer (Legacy)
remove_action('wp_head', 'rsd_link'); // Really Simple Discovery
/**
* Usuń parametr wersji ze skryptów i stylów
*/
function wppoland_remove_version_scripts_styles($src) {
if (strpos($src, 'ver=')) {
$src = remove_query_arg('ver', $src);
}
return $src;
}
add_filter('style_loader_src', 'wppoland_remove_version_scripts_styles', 9999);
add_filter('script_loader_src', 'wppoland_remove_version_scripts_styles', 9999);
Dlaczego to ważne: Łamie to logikę prostych skanerów (“Script Kiddies”). Jeśli bot skanuje milion stron szukając “WordPress 5.X”, Twoja strona nie zwróci pasującego wzorca. Bot pójdzie dalej.
Część 2: Nagłówki Bezpieczeństwa (Security Headers)
Ukrycie wersji to jak zdjęcie numeru z drzwi domu. Pomaga, ale nie zamyka zamka. Nagłówki HTTP są ryglami.
W 2026 roku przeglądarki są restrykcyjne. Jeśli nie wyślesz odpowiednich nagłówków, narażasz się na ataki XSS i Clickjacking.
1. X-Frame-Options (Anty-Clickjacking)
Ten nagłówek mówi przeglądarce: “Nie pozwalaj nikomu wrzucać mojej strony w ramkę <iframe>.”
Zapobiega to tworzeniu fałszywych stron, które ładują Twój panel logowania w niewidzialnej ramce i przechwytują kliknięcia.
Wdrożenie (.htaccess):
<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>
2. X-Content-Type-Options
Zapobiega “MIME Sniffing”. Jeśli haker wgra plik .jpg, który w rzeczywistości zawiera kod JS, ten nagłówek każe przeglądarce traktować to jako obrazek i nie wykonywać kodu.
Wdrożenie:
<IfModule mod_headers.c>
Header set X-Content-Type-Options nosniff
</IfModule>
3. Strict-Transport-Security (HSTS)
To krytyczne dla SSL. Wymusza na przeglądarce zawsze używanie HTTPS, nawet jeśli użytkownik wpisze http://.
Zapobiega atakom “Man-in-the-Middle” w publicznych sieciach Wi-Fi.
Wdrożenie (Tylko jeśli masz działający SSL!):
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>
Część 3: Wyłącz XML-RPC
xmlrpc.php to przestarzałe API. W erze REST API jest zbędne.
Jednak jest to cel nr 1 ataków Brute Force, ponieważ pozwala hakerowi sprawdzić 500 haseł w jednym zapytaniu HTTP (metoda “multicall”).
Jak to zabić:
Dodaj do .htaccess:
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
LUB użyj filtra w functions.php:
add_filter('xmlrpc_enabled', '__return_false');
Część 4: Uprawnienia Plików (File Permissions)
Często pomijane. Jeśli uprawnienia są złe, haker, który przejmie jedną wtyczkę, może nadpisać cały rdzeń (“Core”).
Złote Zasady:
- Katalogi:
755(Odczyt/Wykonanie dla wszystkich, Zapis tylko dla właściciela). - Pliki:
644(Odczyt dla wszystkich, Zapis tylko dla właściciela). - wp-config.php:
400lub440(Odczyt TYLKO dla serwera). Nikt inny nie powinien tego czytać.
Podsumowanie
Bezpieczeństwo to proces, nie produkt.
- Ukryj informacje (usuń wersje).
- Utwardź połączenie (HSTS, Headers).
- Zamknij drzwi (XML-RPC).
- Zarygluj okna (Uprawnienia).
Wykonaj to, a będziesz bezpieczniejszy niż 99% stron WordPress.