Лучший способ реализовать запрет после слишком много попыток входа в систему

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

В настоящее время у меня это реализовано с помощью запрета IP, если один и тот же IP последовательно делает ошибку входа в систему 10 раз, IP запрещен на 30 минут от возможности входа в систему, они могут просматривать веб-сайт все еще. Однако, если это произошло в высокой популяции, например университетском городке, разве это не помешало бы всей школе войти в систему?

Так есть лучший способ сделать это, который не использует IP-адреса? Я думал, что могу сделать это с помощью куки-файлов, но пользователь, пытающийся принудительно настроить учетную запись, может просто удалить свои файлы cookie после каждых 10 попыток.

Подход, который я однажды соблюдал, похож на тот, который я встречал на странице электронного банка моего банка. Он запрещает дальнейшие логины на все большее количество времени для каждой учетной записи, например, 5 попыток, где вы ожидаете 10 с, 1 мин, 5 мин, 15 мин, а затем 30 мин, например. Злоумышленник обычно нацелен на определенную учетную запись. Также должно быть глобальное правило, применяемое для каждого IP-адреса, которое блокирует логин после определенного количества попыток, которое должно быть больше 5, например 10. Кроме того, для обоих правил вы можете сравнивать браузеры и файлы cookie и т. Д. Для повышения толерантности.

Создайте таблицу mysql с именем «failed_logins» с двумя полями, поле «Пользователь» / внешний ключ и поле «Timestamp».

Когда пользователь успешно войдет в систему, удалите все строки «failed_logins» для этого пользователя.

Когда пользователь безуспешно входит в систему, создайте новую строку в «failed_logins» для этого пользователя с текущей меткой времени.

При каждой попытке входа для данного пользователя перед проверкой правильности / неправильности пароля:

  • запустите запрос, удалив все строки «failed_logins» старше 15 минут (например).

  • запустите запрос, проверяющий количество строк в failed_logins для пользователя, пытающегося войти в систему. Если> = 5 (например), убейте попытку входа в систему, уведомив пользователя, что они были заблокированы из своей учетной записи, и попробуйте вернуться через некоторое время.

Результат: пользователи заблокированы из своей учетной записи после 5 неудачных попыток входа в систему в течение 15 минут.

Иногда вам необходимо добавить дополнительную защиту на защищенный паролем веб-сайт. В этой статье объясняется, как доступ к странице входа может быть ограничен после трех неудачных попыток входа в систему. Эта схема использует IP-адрес посетителей для хранения попыток журнала в базе данных и блокировки доступа к функции входа в систему в течение 30 минут после третьей неудачной попытки.

http://webcheatsheet.com/php/blocking_system_access.php