Как разблокировать аккаунт после 5 неудачных попыток входа

mbaev 14.10.2016, 15:18

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

Sorry, there have been more than 5 failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.

а по-русски

Аккаунт временно заблокирован по причине более чем 5 неудачных попыток входа. Попробуйте войти позже, или запросите новый пароль.

Это простая самооборона Друпала, которая активируется после 5 (по умолчанию) попыток входа. Таким образом, система не позволяет злоумышленникам забрутофорсить (англ. brute force. Cм. Полный перебор) сайт. Работает она достаточно просто: во время каждой авторизации, Друпал сохраняет ip-адрес пользователя, запоминая при этом, точную дату события и дату окончания "срока годности" попытки.

Вот некоторые нюансы:

  • По умолчанию "срок годности" составляет 1 земной час.
  • Количество возможных, неудачных попыток входа - 5.
  • Эти значения могут быть изменены.
  • Вместо ip-адреса может быть сохранено имя хоста.
  • Данные, у которых истек "срок годности" очищаются только по крону.
  • Вы можете войти в систему, в любом случае если пройдете процедуру "Сброса пароля"!

Вот еще один интересный факт:

Вы можете имя пользователя указать верно, но при этом 5 раз ошибиться с паролем. В таком случае, попытки авторизации будут запрещены на 6 часов. При этом, через 60 минут можно будет повторить попытку входа, но с другого ip-адреса.

Что касается простых смертных - мы разобрались. Администраторы, же или программисты могут сталкиваться с этой проблемой чаще, т.к. им хлеб в рот не клади, дай только что-нибудь сломать. К счастью, для тех у кого есть доступ к Драшу или напрямую к базе могут обойтись без сброса пароля или часового ожидания. Нужно просто почистить таблицу flood. Вот восемь способов это сделать.

  1. # Очистить все.
  2. drush sqlq "DELETE FROM flood";
  3.  
  4. # Снять блокировку для существующего пользователя с id=1.
  5. drush sqlq "DELETE FROM flood WHERE event = 'failed_login_attempt_user' AND identifier LIKE '1-%'";
  6.  
  7. # Очистить данные для определенного ip адреса.
  8. drush sqlq "DELETE FROM flood WHERE event = 'failed_login_attempt_user' AND identifier LIKE '127.0.0.1'";
  9.  
  10. # Если вы не имеете установленного Drush, тогда заходим в консоль базы и выполняем запросы "наживую".
  11. mysql> DELETE FROM flood;
  12. mysql> DELETE FROM flood WHERE event = 'failed_login_attempt_user' AND identifier LIKE '1-%';
  13. mysql> DELETE FROM flood WHERE event = 'failed_login_attempt_user' AND identifier LIKE '127.0.0.1';

Проблемы, ошибки, неточности в тексте пишите в комментах.

Profile picture for user Гость

KosHta , ,

Спасибо большое, Максим. В закладки однозначно, клиенты задалбывают подобными вопросами, Нимагу вайти на сайт, всёпропало.

Profile picture for user Гость

Гость , ,

А как "сбросить пароль"?

Profile picture for user Гость

Гость , ,

Удаляю таблицы flood и вуаля, Макс ещё раз выручил ))

Profile picture for user Гость

KosHta , ,

Вместо того чтоб запомнить, я в закладки сайт и вперёд моё мыщь. ))