Как подсчитывать количество попыток ввода пароля?

Стоит обычная задача ограничения попыток ввода пароля для конкретного индивида (самописный движок на PHP/MySQL): не более трёх за полчаса.
Вопрос: где хранить счётчик попыток?
На форумах везде предлагают сессию, но ведь удалить сессионные куки и завести новую сессию для бота - проще простого, ведь так? Как же быть в таком случае? Идентифицировать IP? Но, опять же, тогда надо где-то хранить счётчик - где?
  • Вопрос задан
  • 3620 просмотров
Решения вопроса 1
akubintsev
@akubintsev
Опытный backend разработчик
Ну да, по сперва вам надо идентифицировать клиента как-то. IP само собой + id сессии или user-agent. Полностью гарантировать однозначную идентификацию у вас никак не выйдет.
Дальше делаете таблицу вида id-соединения (можно и несколько столбцов завести для выборки), last_access_time, count. Сверяетесь с ней при аутентификации. Пишите заодно и cron-сервис для подчистки устаревших записей.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Рекомендую использовать fail2ban. Идею интеграции можно почерпнуть например, здесь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы