Как отключить вход с помощью адреса электронной почты в WordPress

Недавно один из наших пользователей спросил нас, как они могут отключить функцию входа в систему с помощью электронной почты, представленную в WordPress 4.5. Эта функция позволяет пользователям входить в систему, используя имя пользователя или адрес электронной почты в форме входа. В этой статье мы покажем вам, как отключить функцию входа в систему с адресом электронной почты в WordPress.

Зачем отключать вход по электронной почте в WordPress?

Некоторые пользователи считают, что адреса электронной почты более известны, чем имя пользователя. Если вы отправляете кому-то электронное письмо, значит, он уже знает ваш адрес электронной почты.

Если кто-то хочет взломать ваш сайт WordPress, знание адреса электронной почты потенциально может облегчить им взлом, угадав ваш пароль или взломав вашу учетную запись электронной почты.

Мы не считаем, что использование адреса электронной почты для входа в систему делает сайт WordPress менее безопасным. Вы всегда можете добавить дополнительные уровни безопасности, такие как защита паролем каталога администратора WordPress и добавление двухэтапной проверки.

Для безопасности WordPress мы используем Sucuri на всех наших сайтах. Посмотрите, как Sucuri помог нам заблокировать 450 000 атак WordPress за 3 месяца.

Сказав это, мы понимаем, что некоторые пользователи все еще могут захотеть отключить вход с помощью электронной почты на своих сайтах WordPress. Посмотрим, как это легко сделать.

Отключить вход по электронной почте в WordPress с помощью плагина

Первое, что вам нужно сделать, это установить и активировать плагин «Нет входа по электронной почте». Для получения дополнительной информации см. Наше пошаговое руководство по установке плагина WordPress.

Плагин работает «из коробки», и вам не нужно настраивать никаких параметров. Просто посетите экран входа в систему на своем сайте WordPress и попробуйте войти в систему с адресом электронной почты.

Вы получите ошибку неверного имени пользователя. Плагин также изменит метку «Имя пользователя или адрес электронной почты» на просто имя пользователя.

Отключить вход по электронной почте в WordPress вручную

Этот метод прост, но не очень понятен. Просто добавьте этот код в файл functions.php вашей темы или в плагин для конкретного сайта.

 remove_filter ('Authenticate', 'wp_authenticate_email_password', 20); 

Это ничего не изменит на странице входа, и пользователи по-прежнему будут видеть, что они могут войти, используя либо имя пользователя, либо адрес электронной почты. Но если они введут адрес электронной почты для входа в систему, они получат ошибку неверного имени пользователя.

Вот и все, мы надеемся, что эта статья помогла вам отключить вход с использованием адреса электронной почты в WordPress. Вы также можете ознакомиться с нашим руководством о том, как отключить подсказки для входа в сообщения об ошибках входа в WordPress.

Если вам понравилась эта статья, подпишитесь на наш канал YouTube с видеоуроками по WordPress. Вы также можете найти нас в Twitter и Facebook.



Как отключить возможность входа в систему?

Во время большая атака грубой силой, я бы хотел полностью отключить возможность входа в WordPress. Единственная учетная запись на сайте — моя, поэтому посетителям незачем входить в систему, и это не повредит их опыту на сайте.

Когда мне нужно войти в систему, я могу удалить код. В качестве альтернативы я могу ограничить вход в систему только своим IP-адресом.

Я пытаюсь добиться этого, отлавливая попытку входа в систему как можно раньше с помощью следующего кода

   if (isset ($ _ POST ['pwd']) || isset ($ _ GET ['pwd'])) {заголовок ($ _ SERVER ["SERVER_PROTOCOL"]. "404 Not Found");  echo 'вход на сайт отключен';  die ();}  

Это грубовато, но должно работать. Тем не менее, все еще есть попытки входа в систему, и я не знаю, откуда они могли исходить.

Как еще WordPress принимает вход в систему, если это не с полем ‘pwd’?

Есть ли существующее соглашение об отключении входа в систему?

Изменить: помимо остановки wp-login.php, я удалил xmlrpc.php, который использовался как другой вход в систему брутфорса. Моя текущая установка не нужна, но ваша может. Убедитесь, что он вам не нужен, прежде чем отключать его.


3

Отсутствие аутентификации должно помочь для всех возможных типов аутентификации — формы входа, xmlrpc, ajax и т. д.

Edit : фактически понял, что есть способ сохранить отправку связанного с пользователем запроса в БД

  function wpse208677_authenticate ($ user, $ username, $ pass) {remove_filter ('Authenticate', 'wp_authenticate_username_password  ', 20,3);  return null; //если вы хотите внести свой IP в белый список, проверьте его и верните $ user} add_filter ('Authenticate', 'wpse208677_authenticate', 10,3)  

Улучшить этот ответ
отредактировал 19 марта ’18 в 8:40
Джек Йоханссон ♦
13.7k88 золотых знаков2929 серебряных знаков6464 бронзовых знака
ответил 14 ноя15 в 19: 43
  • Это полезно, но я ищу способ закоротить логин с самого начала. У меня есть суури и еще один плагин, который предупреждает меня об атаках грубой силы. Я обеспокоен тем, что это все равно вызовет действия над этими плагинами. — Майкл Халили, 14 ноября 2015, 20:40
  • @MichaelKhalili, вы не можете реально сделать это, поскольку попытки входа в систему могут поступать из самых разных источников. Если вас интересует блокировка только wp-login.php или xmlrpc. php, вы должны сделать это на уровне конфигурации webserve (htaccess в apach тоже может помочь) и не позволять php запускаться вообще. Единственный сравнимый (с точки зрения производительности) PHP-код потребует модификации wp-config.php, файла, к которому вы должны как можно больше не прикасаться. Любое другое решение на основе php не будет лучше, чем ответ. — Марк Каплун 20 нояб., В 17:44
  • Я понял это, так как разместил вопрос и обновил свой пост. Я могу поместить код, который ищет $ _POST [‘pwd’], в обязательный плагин (mu-plugins) и отключить xmlrpc.php. Кажется, это помогает. Я остановил большинство атак с помощью $ _POST [‘pwd’], а остальные остановил после того, как я отключил xmlrpc.php — Майкл Халили 20 ноября 2015 г., 16:21
  • 1
    Проблема с удалением файлов заключается в том, что они вернутся при обновлении. лучше заблокировать в htaccess, если вы не используете xmlrpc — Марк Каплун 20 ноя 2015 в 17:20
  • 1
    Что касается безопасного отключения XML-RPC, я обнаружил, что вы можете отключить его с помощью фильтра add_filter (‘xmlrpc_enabled’, ‘__return_false’); Есть также несколько плагинов, которые сделают это за вас. Я использовал этот wordpress.org/plugins/disable-xml-rpc — Майкл Халили, 20 января 2016 г., 1:25
| показать 1 дополнительный комментарий

Отказ пройти аутентификацию должен сделать трюк для всех видов возможной аутентификации — форма входа, xmlrpc, ajax, что угодно

Edit : на самом деле реализовано, что есть способ сохранить отправку запроса, связанного с пользователем, в БД

  function wpse208677_authenticate ($ user, $ username, $ pass) {remove_filter ('Authenticate', 'wp_authenticate_username_password', 20,3);  return null; //если вы хотите внести свой IP в белый список, проверьте его и верните $ user} add_filter ('authenticate', 'wpse208677_authenticate', 10,3)  

0

Главный ответ здесь — ужасно плохой код PHP, полностью сломанный. Вот хорошая версия. У меня слишком мало очков репутации, чтобы комментировать исходный ответ.

Этот код можно в крайнем случае разместить в самом низу wp-config.php .

  функция wpse208677_authenticate ($ user, $ username, $ pass) {remove_filter ('Authenticate', 'wp_authenticate_username_password', 20,3);  return null; //если вы хотите внести свой IP в белый список, проверьте его и верните $ user} add_filter ('Authenticate', 'wpse208677_authenticate', 1,3)  

Другой вариант — запретить доступ на страницы входа/регистрации. Это работает даже за скрытым URL-адресом входа в WordPress.. Этот код можно разместить в самом верху wp-config.php (после открывающего Php .

   if (in_array ($ _SERVER ['PHP_SELF'], array ('/wp-login.php', '/wp-register.php'))) {die ('Сайт в режиме обслуживания.')  ;}  

Улучшите этот ответ
ответил 19 марта ’18 в 8:27
  • 2
    Извините, но помещать код в wp - очень плохая идея. -config.php файл. Кроме того, я не вижу, чем ваш код отличается от другого ответа? — Джек Йоханссон ♦ 19 марта 2018, 8:39
  • 2
    Предыдущий ответ Марка К ответ был обновлен вами, Джек Ю. вчера, исправление опечатки, которую я исправил. Помещать код в wp-config — плохая идея, это было аварийным сценарием для тех, кто знает, что делает. Чем раньше мы зайдем, тем меньше ресурсов потребуется WP для блокировки входа в систему. — Бранндон 20 мар. ’18 в 14:17
добавить комментарий |

Главный ответ здесь — ужасно плохой код PHP, полностью сломанный. Вот хорошая версия. У меня слишком мало очков репутации, чтобы комментировать исходный ответ.

Этот код можно в крайнем случае разместить в самом низу wp-config.php .

  функция wpse208677_authenticate ($ user, $ username, $ pass) {remove_filter ('Authenticate', 'wp_authenticate_username_password', 20,3);  return null; //если вы хотите внести свой IP в белый список, проверьте его и верните $ user} add_filter ('Authenticate', 'wpse208677_authenticate', 1,3)  

Другой вариант — запретить доступ на страницы входа/регистрации. Это работает даже за скрытым URL-адресом входа в WordPress. Этот код можно разместить в самом верху wp-config.php (после открывающего Php .

   if (in_array ($ _SERVER ['PHP_SELF'], array ('/wp-login.php', '/wp-register.php'))) {die ('Сайт в режиме обслуживания.')  ;}  

-3

вы можете решить эту проблему, используя

сменить каталог «wp-admin» и защитить этот каталог с помощью. пароль htaccess

Улучшить этот ответ
ответ дан 14 ноя. ’15 в 17:02
  • 1
    Каждый, кто задумывается об этом, должен помнить, что публичные запросы ajax по-прежнему отправляются в каталог wp-admin. Если ваш сайт использует ajax, вам следует разблокировать путь к admin-ajax.php — Майкл Халили, 14 ноября 2015 г., 21:14
  • 1
    И поскольку WP использует AJAX в ядре, этого нигде делать не следует. — kaiser 14 нояб. 2015, 21:45
  • Я согласен, что это не решение для «отключения» регистрации/входа пользователей, о чем идет речь здесь. Но @kaiser, почему ты говоришь, что этого нельзя делать? Я делаю на двух сайтах, которыми я лично управляю, где нет возможности регистрации пользователей. Я также использую защиту паролем .htaccess для файла wp-login.php. Если он правильно настроен, запросы Ajax и другие вещи от wp-admin (JS, CSS, изображения) вообще не являются проблемой и могут резко снизить вероятность успеха атак методом грубой силы. — cybmeta, 25 ноя. 2015, в 6:01
  • @cybmeta вы переименовали в wp-admin? — kaiser 25 нояб., В 11:25
  • Нет, не знал. Это еще один вариант, но он менее безопасен, URL-адрес администратора сайта можно легко обнаружить, независимо от того, какое имя вы дали. Во всяком случае, это не объясняет, почему вообще не следует блокировать доступ к этому месту. Кроме того, я не понимаю, чем лучше изменить имя, чем заблокировать доступ к какому-либо месту. Обратите внимание, что контекст таков, что никто, кроме вас, не будет получать к нему доступ, почему блокировать доступ для кого-либо еще плохо? В настоящее время, если только вам разрешен доступ к wp-admin, я бы заблокировал wp-admin с помощью .htaccess, даже если имя было изменено. — cybmeta 25 ноя 2015, в 12:06
добавить комментарий |

вы можете исправить эти проблемы, используя

сменить каталог «wp-admin» и защитить этот каталог с помощью. пароль htaccess

Оцените статью
logicle.ru
Добавить комментарий