В стандартной установке WordPress можно авторизоваться как по имени пользователя, так и по email-адресу. Несмотря на удобство, такая функциональность может представлять угрозу безопасности, особенно если email легко угадать или он используется в других сервисах. В этой статье мы рассмотрим, как отключить авторизацию через email в WordPress, чтобы разрешить вход только по имени пользователя.
Почему стоит отключить авторизацию через email в WordPress
Авторизация через email упрощает вход, но одновременно увеличивает поверхность атаки. Многие злоумышленники знают email-адрес жертвы или могут его легко подобрать, тогда как точное имя пользователя может быть неизвестно. Отключение входа по email помогает:
- Уменьшить риск перебора паролей с использованием email;
- Повысить безопасность аккаунтов;
- Сделать процедуру входа более строгой и контролируемой.
Если вы заботитесь о безопасности своего сайта, особенно корпоративного или с несколькими авторами, этот метод будет полезен.
Как WordPress обрабатывает вход по email и имени пользователя
Когда пользователь вводит в форму логина данные, WordPress проверяет, есть ли совпадение либо с именем пользователя, либо с email. Если совпадение по email найдено, система подставляет связанный с ним логин и пытается авторизовать пользователя.
Чтобы запретить такую логику, нужно перехватить процесс аутентификации и проверить, что введено именно имя пользователя, а не email.
Реализация отключения входа через email с помощью кода
Для решения задачи добавим фильтр на аутентификацию, который проверит формат введённого логина и отклонит попытки входа с email.
function wptavern_restrict_login_to_username( $user, $username, $password ) {
if ( is_email( $username ) ) {
return new WP_Error( 'email_login_disabled', __( 'Вход по email запрещён, используйте имя пользователя.' ) );
}
return $user;
}
add_filter( 'authenticate', 'wptavern_restrict_login_to_username', 20, 3 );
Объяснение кода:
- Функция
wptavern_restrict_login_to_usernameполучает три параметра: объект пользователя (если он уже есть), введённый логин и пароль. - С помощью встроенной функции
is_emailпроверяется, является ли введённая строка email-адресом. - Если да — возвращается объект ошибки с сообщением, запрещающим вход по email.
- Если нет — возвращается объект пользователя без изменений, и процесс аутентификации продолжается.
Добавьте этот код в файл functions.php активной темы или в отдельный плагин.
Использование плагинов для ограничения авторизации
Если не хотите вручную писать код, можно воспользоваться плагинами, которые расширяют возможности входа и логина. Например:
- Clearfy Pro — плагин оптимизации и безопасности, в котором есть функция ограничения способов авторизации. Подробнее: wpshop.ru.
- WPCommunity — плагин для создания сообщества с расширенными настройками пользователей, в том числе ограничения входа по email. Подробнее: wpshop.ru.
Такие плагины позволяют гибко настраивать процессы входа, добавлять двухфакторную аутентификацию и логирование попыток входа.
Дополнительные советы по безопасности авторизации в WordPress
Отключение входа по email — только один из шагов. Рекомендуется дополнительно:
- Включить двухфакторную аутентификацию (2FA) через плагины, например, Clearfy Pro.
- Использовать сложные пароли и регулярно их менять.
- Ограничить количество попыток входа, чтобы предотвратить перебор.
- Вести логирование попыток авторизации для контроля активности.
Эти меры значительно повысят безопасность вашего сайта.
Тестирование решения и отладка
После добавления кода или активации плагина обязательно проверьте работу:
- Попробуйте войти под email — должно появиться сообщение об ошибке.
- Войдите под именем пользователя — вход должен пройти успешно.
- Проверьте совместимость с другими плагинами безопасности и кеширования.
Для отладки можно включить WP_DEBUG и просмотреть логи ошибок.