Zmiana domyślnego adresu logowania w WordPressie to jeden ze sposobów zwiększenia bezpieczeństwa witryny. Domyślny adres wp-login.php jest dobrze znany potencjalnym atakującym, dlatego warto zmienić go na coś niestandardowego, np. /bezpieczny-login. Dzięki temu, nawet jeśli ktoś zna standardowy adres, próba logowania bez użycia właściwego adresu zakończy się komunikatem o błędzie.
Dlaczego Warto Zmienić Adres Logowania w WordPress?
Zmiana adresu logowania w WordPress ma kilka korzyści:
- Poprawa bezpieczeństwa: Hakerzy często atakują strony, próbując odgadnąć dane logowania. Zmiana domyślnego adresu utrudnia im zadanie.
- Redukcja liczby niechcianych prób logowania: Automatyczne boty często atakują domyślne adresy logowania. Przeniesienie strony logowania na inny adres zmniejsza liczbę takich prób.
- Lepsza kontrola nad dostępem: Zmiana adresu logowania pozwala na bardziej precyzyjne monitorowanie, kto próbuje zalogować się do Twojej strony.
Jak Zmienić Adres Logowania w WordPress?
Zmiana adresu logowania w WordPress nie jest trudna i można ją wykonać na kilka sposobów. Najłatwiejszym jest skorzystanie z wtyczki, ale dla bardziej zaawansowanych użytkowników opiszę również ręczną metodę.
Zmiana Adresu Logowania za Pomocą Wtyczki
Najprostszym sposobem na zmianę adresu logowania jest skorzystanie z wtyczki. Oto kilka popularnych wtyczek, które to umożliwiają:
- WPS Hide Login: Ta wtyczka pozwala na łatwą zmianę adresu logowania bez modyfikacji plików rdzenia WordPressa.
- Rename wp-login.php: Umożliwia zmianę adresu logowania w prosty sposób.
Aby zainstalować wtyczkę, wykonaj następujące kroki:
- Zaloguj się do panelu administracyjnego WordPress.
- Przejdź do sekcji „Wtyczki” i kliknij „Dodaj nową”.
- Wyszukaj wtyczkę, którą chcesz zainstalować, np. „WPS Hide Login”.
- Zainstaluj i aktywuj wtyczkę.
- Przejdź do ustawień wtyczki i skonfiguruj nowy adres logowania.
Ręczna Zmiana Adresu Logowania
Poniższy skrypt w pliku functions.php Twojego motywu realizuje następujące zadania:
- Dodaje niestandardowy adres logowania – użytkownik loguje się przez /bezpieczny-login.
- Blokuje dostęp do wp-login.php – uniemożliwia bezpośredni dostęp do standardowego interfejsu logowania.
- Chroni panel administracyjny (wp-admin) – tylko zalogowani użytkownicy mogą uzyskać dostęp do panelu.
- Automatycznie przekierowuje po zalogowaniu – użytkownik po udanym logowaniu trafia do panelu administracyjnego.
Skrypt najlepiej wklej na samym końcu pliku function.php tuz przed ?>
function block_wp_login_access() { $requested = $_SERVER['REQUEST_URI']; if (strpos($requested, 'wp-login.php') !== false && !isset($_GET['custom_login'])) { if ($_SERVER['REQUEST_METHOD'] === 'POST' || (isset($_GET['action']) && in_array($_GET['action'], array('login', 'postpass', 'lostpassword', 'rp', 'resetpass')))) { return; } if (!is_user_logged_in()) { wp_die('Nieautoryzowany dostęp', 'Błąd', array('response' => 403)); } else { wp_redirect(admin_url()); exit; } } } add_action('init', 'block_wp_login_access'); function block_wp_admin_for_guests() { if (is_admin() && !is_user_logged_in() && !(defined('DOING_AJAX') && DOING_AJAX)) { wp_die('Nieautoryzowany dostęp', 'Błąd', array('response' => 403)); } } add_action('admin_init', 'block_wp_admin_for_guests'); function add_custom_login_rewrite_rule() { add_rewrite_rule('^bezpieczny-login/?$', 'index.php?custom_login=1', 'top'); } add_action('init', 'add_custom_login_rewrite_rule'); function add_custom_query_vars($vars) { $vars[] = 'custom_login'; return $vars; } add_filter('query_vars', 'add_custom_query_vars'); function custom_login_template_redirect() { if (get_query_var('custom_login') == 1) { if (is_user_logged_in()) { wp_redirect(admin_url()); exit; } $_GET['custom_login'] = 1; require_once(ABSPATH . 'wp-login.php'); exit; } } add_action('template_redirect', 'custom_login_template_redirect'); function custom_login_redirect($redirect_to, $requested_redirect_to, $user) { return admin_url(); } add_filter('login_redirect', 'custom_login_redirect', 10, 3);
Może Cię zainteresować: Najlepsze wtyczki do WordPressa
Omówienie funkcji
block_wp_login_access()
Ta funkcja, wywoływana na etapie inicjalizacji (hook init), monitoruje adres URL. Jeśli ktoś próbuje uzyskać dostęp do wp-login.php bez specjalnego parametru custom_login, a żądanie nie dotyczy logowania (czyli nie jest metodą POST ani nie ma określonych akcji jak lostpassword), następuje blokada dostępu poprzez wyświetlenie komunikatu „Nieautoryzowany dostęp”. W przypadku, gdy użytkownik jest już zalogowany, następuje przekierowanie do panelu administracyjnego.
block_wp_admin_for_guests()
Funkcja ta zabezpiecza panel wp-admin przed dostępem niezalogowanych użytkowników. Dzięki niej tylko użytkownicy posiadający uprawnienia administracyjne mają dostęp do panelu, co minimalizuje ryzyko ataków.
add_custom_login_rewrite_rule()
Dzięki tej funkcji dodajemy nową regułę przepisywania adresów, która mapuje adres /bezpieczny-login na index.php?custom_login=1. Po zapisaniu ustawień permalinków ta reguła zacznie działać, umożliwiając korzystanie z niestandardowego adresu logowania.
add_custom_query_vars()
Rejestracja zmiennej custom_login pozwala WordPressowi rozpoznać tę zmienną w adresie URL, co jest kluczowe dla dalszego przetwarzania żądania.
custom_login_template_redirect()
Jeśli w adresie URL znajduje się zmienna custom_login (czyli użytkownik odwiedza /bezpieczny-login), funkcja ta sprawdza, czy użytkownik jest już zalogowany. W przypadku niezalogowanego użytkownika dołącza standardowy plik logowania (wp-login.php), ustawiając odpowiedni parametr, aby funkcja blokująca nie przerwała logowania. W przeciwnym razie użytkownik zostaje przekierowany do panelu administracyjnego.
custom_login_redirect()
Dzięki temu filtrowi, po udanym logowaniu, użytkownik zostaje automatycznie przeniesiony do panelu administracyjnego, co poprawia komfort korzystania z witryny.
Podsumowanie
Wdrożenie tego skryptu to efektywny sposób na zwiększenie bezpieczeństwa witryny WordPress. Zmiana domyślnego adresu logowania na niestandardowy (w naszym przypadku /bezpieczny-login) utrudnia potencjalnym atakującym dostęp do interfejsu logowania. Dodatkowo, blokada dostępu do wp-admin dla niezalogowanych użytkowników oraz automatyczne przekierowanie po zalogowaniu tworzą spójny system zabezpieczeń, który chroni Twoją stronę przed nieautoryzowanym dostępem.