Як захистити стандартну сторінку входу WordPress та змінити її елементи

Привіт:) У цьому пості розберу прості способи захисту стандартної сторінки входу WordPress-сайту та зміни її елементів, щоб убезпечити ресурс від злого та отримання доступу до адмін-панелі сторонніми особами.

Після встановлення ВордПрес доступ до всіх налаштувань можна отримати за посиланнями

https://site.com/wp-admin
https://site.com/wp-login.php

Це стандартні URL-адреси, які доступні за замовчуванням для всіх свіжовстановлених копій WordPress.

З огляду на популярність цієї CMS, до неї збільшується увага зловмисників. На більш менш популярний ресурс можуть "покласти око" недобросовісні люди з метою дізнатися конфіденційну інформацію про його користувачів або порушити роботу. Один із способів убезпечити — це зробити так, щоб ніхто, окрім власника, не знав як потрапити до адміністративної панелі керування ресурсу. Розберу робочі та надійні методи.

до змісту ↑

Як змінити сторінку входу WordPress

Покажу 2 способи. Перший — це використовувати плагін, який автоматично все зробить сам. У другому доведеться самому робити редагування у коді. Детально покажу обоє. Вам тільки залишається вибрати зручний для себе.

Якщо ви тільки починаєте знайомитися з WP або не хочете розбиратися з кодом, рекомендую скористатися плагіном.

За допомогою плагіну

Для ВордПрес є декілька рішень. Розберу на прикладі безкоштовного модуля WPS Hide Login.

  1. Встановіть та активуйте плагін.
  1. Перейдіть в адмін-розділ Налаштування > WPS Hide Login та знайдіть однойменний розділ опцій.
  1. В опції URL для входу вкажіть нову адресу сторінки авторизації, яку знатимете тільки ви.
  1. Налаштування URL-адреса перенаправлення відповідає за те, на яку сторінку буде перенаправлено користувача або бота, якщо він відкриє одну із зазначених вище стандартних URL-адрес. За замовчуванням стоїть перенаправлення на сторінку "404". Можете змінити.
  1. Натисніть Зберегти зміни.
Після збереження налаштувань стара адреса адмінки буде недоступна (замість неї буде помилка 404 або перехід на вказану сторінку).
до змісту ↑

За допомогою ручної вставки PHP-коду

Перед початком всіх дій рекомендую зробити повну резервну копію файлів сайту та бази даних, щоб відновити, якщо щось піде не так.
  1. Відкрийте каталог файлів сайту на сервері (див. Як під'єднатися до сервера хостингу через FTP).
  1. Завантажте локально на комп'ютер файл wp-login.php.
  1. Відкрийте файл у будь-якому редакторі коду (наприклад, Notepad++ або Sublime Text) та перезбережіть його (Файл > Зберегти як…) з новим ім'ям та розширенням .php. Нове ім'я — це нова URL-адреса адмін-частини сайту.
  1. Відкрийте створений файл (у прикладі — petrov-admin.php) і замініть у ньому всі входження рядка "wp-login.php" на "petrov-admin.php".
  1. Збережіть зміни у файлі.

Тепер доступ до сторінки входу WordPress можна отримати за посиланням

https://site.com/petrov-admin.php

Так, сторінку адмінки вже перейменовано. Але вищезазначені 2 адреси за замовчуванням (/wp-admin та /wp-login.php) все ще працюють. Потрібно заборонити доступ до них. Для цього виконайте наступний крок.

  1. До файлу functions.php додайте наступний PHP-код:
/**
 * Редирект на головну із site.com/wp-admin
 */
add_action( 'init', function () {
    if ( is_admin() && ! current_user_can( 'administrator' ) &&
    ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
        wp_redirect( home_url() );
        exit;
    }
});

/**
 * Редирект на головну із site.com/wp-login.php
 */
add_action( 'init', function () {
    $page_viewed = basename( $_SERVER['REQUEST_URI'] );
    if ( $page_viewed == "wp-login.php" ) {
        wp_redirect( home_url() );
        exit;
    }
});

/**
 * Редирект на головну після виходу із системи
 */
add_action( 'wp_logout', function () {
    $login_page  = home_url( 'wp-admin' );  
    wp_redirect( $login_page . "?loggedout=true" );  
    exit;
});

Результатом роботи коду буде автоматичне перенаправлення на головну сторінку сайту з 2-х адрес адмін-панелі за замовчуванням, а також після виходу з системи.

до змісту ↑

Як змінити стандартні елементи форми входу WordPress

У першій частині посту я розібрав, як захистити від злому сторінку входу ВордПрес. Також можна змінити стандартні елементи самої форми авторизації та її поведінку. Покажу 2 способи.

Що можна змінити:

  • фон сторінки;
  • логотип;
  • посилання;
  • вимкнути анімацію при невірному логіні чи паролі;
  • текст повідомлень, якщо невірно введені дані;
  • додати свій блок (капчу, соцмережі, посилання);
  • спосіб реєстрації (за логіном, e-mail).

За допомогою плагіну

В офіційному WordPress-каталозі є декілька безкоштовних розширень. Для прикладу використовуватиму LoginPress | Custom Login Page Customizer. Він був обраний через велику кількість налаштувань.

Встановлення звичайне.

Щоб налаштувати, перейдіть до LoginPress > Customizer та у новому вікні оберіть пункт меню LoginPress.

Ліва частина екрану — це налаштувач, а права — зовнішній вигляд сторінки входу.

Розберу основні опції за розділами.

  • Themes. Вже готові шаблони оформлення. У безкоштовній версії доступний лише один.
  • Logo. Зміна логотипу. За замовчуванням використовується логотип ВордПрес з посиланням на офіційний ресурс. Можна вимкнути взагалі або змінити URL, додати іконку, вибрати розмір і відступи.
  • Background. Дозволяє встановити фонове зображення сторінки входу. Виберіть готове зображення, завантажте своє або використовуйте суцільний колір.
  • Customize Login Form. Вибір кольору/фону та розмірів усієї форми входу, а також окремих її полів.
  • Button Beauty. Зовнішній вигляд кнопки Увійти.
  • Error Messages. Можливість змінити текст для кожної помилки входу.
  • Welcome Messages. Текст для блоків вітання на сторінках входу/виходу, відновлення пароля та реєстрації.
  • Form Footer. Налаштування нижньої частини під формою.
  • Custom CSS/JS. Можете вказати свої стилі та скрипти.

Щоб зберегти всі зміни, натисніть кнопку Опублікувати.

Недолік цього плагіну — деякі потрібні функції доступні у платній версії.
до змісту ↑

Через додавання коду до functions.php

Основний плюс цього методу — не потрібно встановлювати додаткові плагіни.

Іконка логотипу

WordPress на сторінці входу ставить за замовчуванням картинку зі своїм логотипом. Її можна замінити.

add_action( 'login_head', function() {
    echo PHP_EOL . '<style type="text/css">
        #login h1 a {
            /* URL-адреса іконки */
            background-image:url(https://site.com/admin-page-logo.png) !important;
            /* ширина */
            width: 84px;
            /* висота */
            height: 84px;
        }
    </style>' . PHP_EOL;
});

У коді підставте повну URL-адресу своєї іконки. Також ви можете змінити її розміри.

до змісту ↑

URL логотипу

За замовчуванням система ставить посилання на офіційний сайт wordpress.org:

<a href="https://wordpress.org/">Сайт працює на WordPress</a>

Щоби задати свою:

add_filter( 'login_headerurl', function() {
    // посилання на головну сторінку сайту
    return get_home_url();
});

Щоб вивести свій текст посилання:

add_filter( 'login_headertext', function( $url ) {
    // назва сайту
    return get_bloginfo( 'name' );
});

В результаті маємо:

<a href="https://site.com">Site.com</a>

Ще декілька прикладів, щоб вимкнути ті чи інші функції.

до змісту ↑

Приховати посилання "Назад до сайту…"

add_action( 'login_head', function() {
    echo '<style type="text/css">#login #backtoblog { display: none !important; }</style>';
});

Приховати посилання "Втратили свій пароль?"

add_action( 'login_head', function() {
    echo '<style type="text/css">#login #nav { display: none !important; }</style>';
});

Анімація при неправильному логіні або паролі

Щоб вимкнути її, використовуйте код

add_action( 'login_head', function() {
    remove_action( 'login_head', 'wp_shake_js', 12 );
});

Підказки про неправильно введений логін/пароль

Для безпеки текст стандартних підказок краще змінити на якийсь загальний та вказати один для всіх.

add_filter( 'login_errors', function() {
    return 'Щось пішло не так!';
});
Усі вказані CSS-стилі також будуть працювати, якщо додати їх в адмін-розділі Вигляд > Налаштувати > Додатковий код CSS.

Повну таблицю стилів можна знайти у офіційній документації — https://codex.wordpress.org/Customizing_the_Login_Form#Styling_Your_Login.

Михайло Петров
Михайло Петров

Мене звати Михайло. Я — WordPress-розробник. Створюю візитки, корпоративні сайти, блоги на WordPress.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *