


Блог IT-шника
Блог IT-шника
Привіт:) У цьому пості розберу прості способи захисту стандартної сторінки входу WordPress-сайту та зміни її елементів, щоб убезпечити ресурс від злого та отримання доступу до адмін-панелі сторонніми особами.
Після встановлення ВордПрес доступ до всіх налаштувань можна отримати за посиланнями
https://site.com/wp-admin
https://site.com/wp-login.php
Це стандартні URL-адреси, які доступні за замовчуванням для всіх свіжовстановлених копій WordPress.
З огляду на популярність цієї CMS, до неї збільшується увага зловмисників. На більш менш популярний ресурс можуть "покласти око" недобросовісні люди з метою дізнатися конфіденційну інформацію про його користувачів або порушити роботу. Один із способів убезпечити — це зробити так, щоб ніхто, окрім власника, не знав як потрапити до адміністративної панелі керування ресурсу. Розберу робочі та надійні методи.
до змісту ↑Покажу 2 способи. Перший — це використовувати плагін, який автоматично все зробить сам. У другому доведеться самому робити редагування у коді. Детально покажу обоє. Вам тільки залишається вибрати зручний для себе.
Для ВордПрес є декілька рішень. Розберу на прикладі безкоштовного модуля WPS Hide Login.
Тепер доступ до сторінки входу WordPress можна отримати за посиланням
https://site.com/petrov-admin.php
Так, сторінку адмінки вже перейменовано. Але вищезазначені 2 адреси за замовчуванням (/wp-admin та /wp-login.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-х адрес адмін-панелі за замовчуванням, а також після виходу з системи.
до змісту ↑У першій частині посту я розібрав, як захистити від злому сторінку входу ВордПрес. Також можна змінити стандартні елементи самої форми авторизації та її поведінку. Покажу 2 способи.
Що можна змінити:
В офіційному WordPress-каталозі є декілька безкоштовних розширень. Для прикладу використовуватиму LoginPress | Custom Login Page Customizer. Він був обраний через велику кількість налаштувань.
Встановлення звичайне.
Щоб налаштувати, перейдіть до LoginPress > Customizer та у новому вікні оберіть пункт меню LoginPress.
Ліва частина екрану — це налаштувач, а права — зовнішній вигляд сторінки входу.
Розберу основні опції за розділами.
Щоб зберегти всі зміни, натисніть кнопку Опублікувати.
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-адресу своєї іконки. Також ви можете змінити її розміри.
до змісту ↑За замовчуванням система ставить посилання на офіційний сайт 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 'Щось пішло не так!';
});