Jak ukryć wersję WordPressa i zabezpieczyć nagłówki HTTP? (Poradnik 2026)
PL

Jak ukryć wersję WordPressa i zabezpieczyć nagłówki HTTP? (Poradnik 2026)

5.00 /5 - (29 głosów )
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: 400 lub 440 (Odczyt TYLKO dla serwera). Nikt inny nie powinien tego czytać.

Podsumowanie

Bezpieczeństwo to proces, nie produkt.

  1. Ukryj informacje (usuń wersje).
  2. Utwardź połączenie (HSTS, Headers).
  3. Zamknij drzwi (XML-RPC).
  4. Zarygluj okna (Uprawnienia).

Wykonaj to, a będziesz bezpieczniejszy niż 99% stron WordPress.