Приветствую всех читателей! В прошлой статье вы познакомились «Как бороться с попытками зайти в панель управления WordPress» и с одним интересным плагином — Limit Login Attempts, который умеет ограничивать попытки входа в систему и временно блокировать IP.
В этой статье рассказ о способе, как осуществить функцию недопущения регистрации ботов. На одном своем сайте я установил этот код, с которым вы познакомитесь ниже и, (о, чудо!) поток регистраций от ботов, которых у меня на этом сайте было до 50 штук в день, внезапно прекратился.
Как подстраховаться от спам-ботов
Конечно, я не стал делать поспешных выводов, а подождал несколько дней, мало ли что. Вдруг кто-то из тех, кто так упрямо регистрируется на моем сайте, действительно что-то хочет написать в комментарии? Но, увы — только Akismet их и замечал, и причислял к спамерам-ботам. Поэтому я без сомнений удалил тех, кто уже успел за несколько дней накопиться, и установил этот код. Ну, а теперь подробнее о том, как защитить от спам-ботов ваш WordPress-сайт, то есть – как осуществить на практике запрет регистрации спам-пользователям в блоге WordPress.
Как вы знаете, при администрировании и разработке сайтов веб-мастера часто сталкиваются с появлением спам-скриптов, автоматически проходящими регистрацию пользователя на сайтах, а затем спокойненько рассылают свой любимый спам. Принцип действия функции, которую я предлагаю к рассмотрению, прост, как все гениальное.
В существующий код регистрации добавляется новое текстовое поле, чтобы вводить логин под именем, к примеру, «spamunet_user_login», а старое поле «user_login» делается невидимым, встраивая параллельную проверку на заполнение этого нового текстового невидимого поля. Как видите, после внесения изменений внешне ничего не поменялось.
В результате получится, что живой пользователь при регистрации в вашем блоге не заметит разницы, а спам-бот заполнит как раз стандартное поле «user_login», что и приведет к ошибке при регистрации. Не думайте, что все так просто, и любой спамер напишет какую-то свою прогу для взламывания этого кода.
Вы ведь можете задать абсолютно любое значение этому полю, в том числе и цифровое. Например, «abrakadabra1121_user_login», и так для каждого своего сайта. Более того, для подстраховки вы можете иногда просто менять это значение, что займет у вас пару минут. Понятно, что значение «user_login» должно присутствовать обязательно.
Хакер что ли?
Вот таким вопросом встречает нас наш WordPress, если вы забыли и неправильно ввели пароль уже после регистрации. Ну, а зарегистрироваться спамерам он просто не позволяет.
Решение
Функция авторизации и регистрации в вашем, да и любом WordPress проходит в файле wp-login.php. Изменить, как вы поняли, следует поле user_login, которое в этой функции употребляется довольно часто, но нам нужна только функция регистрации. Поэтому открывайте файл wp-login.php в корневой директории вашего сайта, и ищите там такой вот код:
$user_login = $_POST['user_login'];
Замените его на такой:
$user_login = $_POST['user_login']; if(!empty($user_login)) wp_die('Доброго времени суток, спам-бот!)'); $user_login = $_POST['nospam_user_login'];
В этом же файле, рядом, найдите вот это выражение:
И вместо него вставьте:
Если кто-то будет регистрироваться (я имею в виду человека, а не робота), то весь процесс будет проходить, как обычно, так как человек заполнит именно те поля, которые нужны:
То есть, спам-роботам на ваш сайт уже не попасть, потому что они будут заполнять поле «user_login», а не то, которое вы назначили. И не забудьте изменить «user_login» на что-то свое, пусть даже это значение будет иметь 100 символов. Удалить же уже зарегистрированных спам-пользователей вы можете все тем же плагином Clean Up Users, который вы найдете на официальном сайте разработчика плагина.
P.S. Прошло несколько дней, и я хочу показать вам один скриншот:
Такими письмами теперь завалена моя корзина на почте. Это сообщения о том, что некто не смог зарегистрироваться у меня на сайте. Я думаю, вы поняли, кто этот «некто». Да-да, это спам-бот. Писем уже несколько десятков, и я их просто направил в спам, чтобы не мешали нормальной работе почтового ящика.
Как видите, решение работает, и это очень хорошо — иначе мне пришлось бы чистить своих пользователей каждый день.
Как вам решение?
Попробую, спасибо!
у меня не получилось. ввела этот код вместо своего, сайт вместо входа стал выдавать ошибку 500
Код работает, на сайте проверил, посмотрите как вы сохранили файл, в какой кодировке, может что-то упустили