Domyślne logowanie w WordPress może stanowić wąskie gardło w zabezpieczeniach serwisu
Jak i dlaczego warto zmienić domyślną stronę logowania w WordPress? Jako system open-source ma to do siebie, że struktura jego plików jest widoczna, ta sama dla każdej, standardowej instalacji i dobrze znana nie tylko programistom ale też hakerom.
Zmienienie domyślnej strony logowania, pozwoli ukryć standardową bramkę, a co za tym idzie utrudnić życie hakerom i botom próbującym wtargnąć na Twoją stronę. Można to wykonać za pomocą różnych wtyczek, z tym, że są one nie raz bardzo rozbudowane i mogą sprawić, że czas reakcji serwera i bazy danych spadnie, prowadząc do spowolnienia strony i potencjalnego spadku konwersji. Uczynią też panel administracyjny jeszcze bardziej skomplikowanym co może nie spodobać się administratorom. Dlatego też, bardziej profesjonalnym rozwiązaniem jest ręczne zmienienie strony logowania za pomocą kodu. Dowiedz się Jak i dlaczego warto zmienić domyślną stronę logowania w WordPress czytając krótką instrukcję poniżej!
Zmiana strony logowania za pomocą kodu – instrukcja
Czego będziesz potrzebować?
- Motywu potomnego z plikiem functions.php,
- Dostępu do serwera FTP,
- Edytora kodu takiego jak np. Visual Studio Code,
1. Utwórz plik nowej strony logowania
Wejdź na serwer FTP i przekopiuj plik wp-login.php, następnie zmień jego nazwę na upragnioną nazwę strony do logowania. Do potrzeb instrukcji będziemy używać nazwy zaloguj-sie.php.
Otwórz plik zaloguj-sie.php i zastąp wszystkie wystąpienia wp-login.php na zaloguj-sie.php
Możesz też zastąpić link prowadzący do strony WordPressa na link do własnej strony, a także dodawać w nowym pliku dowolne skrypty, style i elementy HTML.
Umieść plik z powrotem na serwerze w katalogu głównym strony i sprawdź czy jest dostępny wpisując nowy adres w polu URL przeglądarki.
2. Przepisz domyślne adresy do logowania, rejestracji, resetowania hasła oraz wylogowania WordPressa
Otwórz plik functions.php motywu potomnego i dodaj do niego poniższe funkcje:
// Przpisujemy domyślne adresy akcji ze strony logowania
function wp_custom_login_url()
{
return home_url('/zaloguj-sie.php');
}
add_filter('login_url', 'wp_custom_login_url', 10, 2);
function wp_custom_registration_url()
{
return home_url('/zaloguj-sie.php?action=register');
}
add_filter('register_url', 'wp_custom_registration_url', 10, 2);
function wp_custom_lostpassword_url()
{
return home_url('/zaloguj-sie.php?action=lostpassword');
}
add_filter('lostpassword_url', 'wp_custom_lostpassword_url', 10, 2);
function wp_custom_logout_url()
{
$custom_logout_url = home_url('/zaloguj-sie.php?action=logout');
$custom_logout_url = wp_nonce_url($custom_logout_url, 'log-out');
return $custom_logout_url;
}
add_filter('logout_url', 'wp_custom_logout_url', 10, 2);
Przepisując domyślne adresy URL do akcji logowania WordPressa, nie musisz już zmieniać ich w innych miejscach takich jak pliki motywu czy nowo utworzony plik zaloguj-sie.php. Nie zamykaj pliku functions.php, bo w następnym kroku dodamy jeszcze funkcję do poprawienia maili.
Jeżeli masz wgrane rozszerzenie Woocommerce i chcesz używać do resetowania hasła podstrony moje-konto dla klientów, pomiń funkcję odpowiedzialną za przepisanie adresu resetowania.
3. Dodaj funkcję do zmiany adresu logowania w wysyłanych mailach
Dopisz funkcję do pliku functions.php odpowiedzialną za maile wysyłane przy zmianie hasła do użytkowników.
// Modyfikacja linku w mailach wysyłanych przy ustawianiu hasła
function my_custom_retrieve_password_message($message)
{
$default_reset_url = '/wp-login.php';
$custom_reset_url = '/zaloguj-sie.php';
$message = str_replace($default_reset_url, $custom_reset_url, $message);
return $message;
}
add_filter('retrieve_password_message', 'my_custom_retrieve_password_message', 10, 4);
Dodaj jeszcze jedną funkcję do pliku functions.php odpowiedzialną za maile wysyłane przy rejestracji użytkowników.
// Modyfikacja adresu przy rejestracji nowych użytkowników
function my_custom_new_user_notification_email($wp_new_user_notification_email) {
// Define your custom login URL
$default_reset_url = '/wp-login.php';
$custom_reset_url = '/zaloguj-sie.php';
// Replace the default login URL with your custom one
$wp_new_user_notification_email['message'] = str_replace($default_reset_url, $custom_reset_url, $wp_new_user_notification_email['message']);
return $wp_new_user_notification_email;
}
add_filter('wp_new_user_notification_email', 'my_custom_new_user_notification_email', 10, 3);
To koniec pracy z plikiem, teraz możesz go już zamknąć i przejść do kolejnego kroku.
4. Zablokuj dostęp do domyślnego adresu logowania
Wejdź na serwer FTP i otwórz ukryty plik .htaccess, jeżeli go nie widzisz musisz zmienić ustawienia wyświetlania ukrytych plików w swoim kliencie FTP. Działanie to polepszy zabezpieczenia blokując zautomatyzowane próby logowania na domyślną bramkę WordPressa.
Otwórz plik w edytorze i dodaj do niego linijkę odpowiedzialną za przekierowanie użytkowników z adresu wp-login.php na stronę główną (możesz ustawić też inny, dowolny adres).
RewriteRule ^wp-login.php$ / [L,R=301]
To już wszystko, nowa bramka logowania jest dostępna pod adresem zaloguj-sie.php, a stary adres wp-login.php zablokowany i przekierowuje na stronę główną, gratulacje, poprawiłeś właśnie zabezpieczenia strony!
Warto jest śledzić zmiany w aktualizacjach WordPressa i nanosić ewentualne korekty na swoją spersonalizowaną stronę logowania by uniknąć bugów i problemów związanych z aktualizacjami samego WordPress core.
Następny opcjonalny krok pozwoli wprowadzić styl graficzny do Twojej bramki logowania.
5. Dodaj style css do nowej podstrony logowania i dostosuj wygląd formularzy i elementów
Możesz wykonać to na dwa sposoby, nie mniej logika jest ta sama, wymagana jest jednak znajomość CSS. Dodając kod do pliku zaloguj-sie.php lub do functions.php motywu potomnego. Otwórz jeden z tych plików w edytorze, i dodaj poniższy kod w odpowiednim miejscu (w przypadku zaloguj-sie.php polecamy górę pliku, w functions.php blisko reszty funkcji związanych z logowaniem.):
function my_login_style()
{ ?>
<style type="text/css">
/* Styl logowania */
h1 a {
background-image: url('/link-do-twojego-logo.png') !important;
}
.login {
background: #6249F2;
}
#login-message a {
color: white !important;
}
#login {
padding: 2% !important;
}
p#nav {
display: flex !important;
justify-content: space-between !important;
}
.login h1 a {
height: 60px !important;
}
.login #login_error,
.login .message,
.login .success {
border-width: 14px !important;
border-radius: 5px;
}
.button-large {
color: white !important;
margin: 1px !important;
background-color: #6249F2 !important;
border: 0px solid white !important;
border-radius: 10px !important;
transition-duration: 0.5s;
}
.button-large:hover {
background-color: white !important;
color: #6249F2 !important;
border: 1px solid #6249F2 !important;
}
.message {
color: white;
background-color: #6249F2 !important;
border-left: 14px solid white !important;
border-radius: 5px;
}
form#loginform,
form#lostpasswordform,
form#registerform {
color: #111 !important;
background-color: #FFD900;
padding: 36px 34px 36px;
border: 1px solid #6249F2;
border-radius: 15px;
border: 0px solid white;
box-shadow: rgba(17, 17, 26, 0.1) 0px 8px 24px, rgba(17, 17, 26, 0.1) 0px 16px 56px, rgba(17, 17, 26, 0.1) 0px 24px 80px;
}
body.login div#login p#nav {
display: -webkit-box;
}
p#nav>a,
p#backtoblog>a,
.privacy-policy-link {
color: whitesmoke !important;
font-weight: bold;
}
p#nav>a:hover,
p#backtoblog>a:hover,
.privacy-policy-link:hover {
color: #FFD900 !important;
}
</style>
<?php }
add_action('login_enqueue_scripts', 'my_login_style');
Zmieni on kolory formularzy i przycisków oraz tła i doda twoje logo (podmień adres URL). Możesz teraz dostosować kolory i inne style elementów do swoich potrzeb i firmowego brandingu.
Możesz też dodać do arkusza stylów inne elementy i zmienić dowolnie ich styl. Masz też możliwość edycji pliku zaloguj-sie.php i dodawania w nim dowolnych elementów HTML i skryptów php lub JavaScript.
Suma tych działań sprawi, że zafundujesz administratorom i użytkownikom spersonalizowane doświadczenie podczas logowania oraz poprawisz zabezpieczenia strony.
Często zadawane pytania
Jak i dlaczego warto zmienić domyślną stronę logowania w WordPress?
Jerzy Lazaridis
Senior Web developer
Archiwum autora
Od roku 2018 zajmuje się profesjonalnie programowaniem, posiada 15 certyfikatów z tej dziedziny oraz wyższe wykształcenie. Pasjonuję się nauką, sportem i sztuką. Fan nowoczesnych technologii i autorskich rozwiązań.