Если в вашем блоге открыта регистрация пользователей, то самой большой проблемой является защита от регистрации ботов. Для того, чтобы отличить бота от реального человека, можно применять разные хитрости: использовать плагины, работающие по принципу невидимой каптчи (используется java-скрипт), использование каптчи или чекбокса в форме регистрации, использование нестандартных, обязательных для заполнения полей. Особенно актуальной проблема защиты формы регистрации от ботов стала в последнее время, когда прошла череда многократных атак на блоги, использующие WordPress. Предлагаю очень простой способ, который защитит регистрацию от ботов, в котором не используются дополнительные плагины и скрипты.
Суть способа в том, чтобы скрыть одно из стандартных полей, необходимых для регистрации — user_login — и вместо него подставить другое поле, о котором боты ничего не знают. Для автоматических скриптов это нестандартное поле будет совершенно незнакомым, и, так как они напрямую обращаются к форме регистрации, то это поле так и будет оставаться неизвестным, станет непреодолимым препятствием. Для обычных же пользователей это поле будет абсолютно прозрачным, так как они его будут видеть глазами.
Для начала найдем стандартное поле user_login и сделаем так, что при его заполнении сайт не открывался. Для этого нужно открыть файл wp-login.php, который находится в корневой паке WordPress, и разыщем такую строчку:
$user_login = $_POST['user_login'];
Заменим ее на этот код:
$user_login = $_POST['user_login']; if(!empty($user_login)) wp_die('Ботам вход запрещен!'); $user_login = $_POST['login_p8oBQLw2'];
Этой подменой мы сделаем элементарную ловушку: если будет регистрироваться бот, то он обязательно заполнит стандартное поле user_login, и следующим шагом получит пустую страницу с надписью «Ботам вход запрещен!». Если же это будет человек, то он даже не заметит, что поле подверглось замене, так как вместо стандартного поля user_login он заполнит нестандартное поле login_p8oBQLw2.
Чтобы поле login_p8oBQLw2 выглядело так же, как и стандартное, и реальный человек не увидел подмены, находим в этом же файле код
<p> <label><br /> <input type="text" name="user_login" id="user_login" class="input" value="" size="20" tabindex="10" /></label> </p>
и меняем его на
<div> <p> <label><br /> <input type="text" name="user_login" id="user_login" class="input" value="" size="20" tabindex="10" /></label> </p> </div> <p> <label><br /> <input type="text" name="login_p8oBQLw2" id="user_login" class="input" value="" size="20" tabindex="10" /></label> </p>
Теперь нестандартное поле станет видимым и точно таким же, что и стандартное. Боты будут стараться заполнить стандартное поле, и в итоге получать отказ от регистрации. Реальные же люди вообще не увидят подмены, и заполнят нестандартное поле, которое и станет их пропуском дальше. Эта простая манипуляция с полем-ловушкой позволяет полностью закрыть блог для автоматической регистрации, оставив ее доступной только реальным людям. Вместо login_p8oBQLw2 вы можете использовать любое другое сочетание символов, и менять его хоть каждый день — для людей процедура регистрации останется прозрачной.
Способ очень простой, однако у него есть один недостаток: при обновлении блога вам заново придется редактировать файл wp-login.php.

а как обновляться, wp-login.php разве не прилетает с обновлениями?