Я работаю над системой auth с ошибкой входа.
Если пользователь не может войти в систему, число попыток в базе данных увеличивается и, если достигается определенный предел, PHP устанавливает переменную skcha сеанса в значение true.
Поэтому, когда пользователь (или спам-бот) снова получает страницу входа в систему, отображается форма отслеживания за счет переменной сеанса
Но поскольку спам-боты в конечном итоге могут удалить cookie сеанса и повторить попытку, это может быть неэффективно.
Должен ли я использовать решение для базы данных? Как бы вы реализовали это (с / или без базы данных)?
Спам-боты могут довольно легко обойти ограничения сеанса, поэтому в базе данных это должно быть эффективно. Спам-боты могут также менять свой IP-адрес на каждый запрос, хотя этого труднее достичь.
Вам нужно будет поместить поле попыток входа в таблицу users, которое начинается с 0, увеличивать это, когда они ошибочно вводят пароль, и сбрасывать его до 0 при успешном входе в систему. Когда кто-то пытается войти в систему как пользователь с попытками входа в систему> 5, вы затем переведете их на другую страницу с надписью, которую они должны ввести правильно (даже если пароль был неправильным).
Я бы просто записал переменную сеанса пользователя, а затем подсчитал, сколько раз форма отправляется для IP-адреса.
Из моей точки зрения просто возьмите имя пользователя, когда он попытается войти в систему на вашей странице PHP, если он / она не попытается, а затем сохранить имя пользователя в таблицах Login_attempts и его IP-адрес. Увеличьте столбец неудачных попыток и проверьте, больше ли это пороговое значение вашего, пусть говорят 5, и если он не сработал, добавьте к нему капчу, а также проверьте бок о бок IP не меняется с каждой попыткой с определенным интервалом времени, скажем, в течение 1 минуты IP-адрес должен оставаться таким же, если он терпит неудачу, а затем не удается выполнить попытки входа в систему.
Для лучшего использования NOSQL or memcache
для извлечения быстрых данных из базы данных.