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

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

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

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
. Вот восемь способов это сделать.

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

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

Ссылка на основную публикацию