У меня такой же вопрос, как этот, на который я ответил 9 лет назад, и ответы на него совершенно бесполезны (Как отложить попытки входа в систему после слишком большого количества попыток (PHP))
Как вы можете отложить попытки входа в систему против ботов без использования sleep ()?
Кажется очевидным сбивающее с толку желание предотвратить DoS-атаки из клиентского кода … Я не понимаю, где я могу установить «задержки» или «http-запрос на вход в систему» для получения с фактического сервера / apache или что-то.
Пожалуйста, будьте снисходительны, я оставил это на несколько дней из-за выгорания и вернулся к нему сейчас, все еще не понимая этого.
Я понимаю и реализую часть регулирования — я знаю, как настроить БД и таблицы для захвата каждой неудачной попытки, но не знаю, как настроить apache / сервер / все, что нужно, чтобы «приостановить» сценарий (сценарий, который обрабатывает форму входа) для этого текущего пользователя / IP-адрес для входа в течение следующих х секунд?
Это сделано с помощью PHP? Или вы настраиваете конфигурацию apache или правило htaccess, чтобы сделать это? Мне действительно нужна помощь с этим …
Вы не должны использовать «sleep ()» в самом скрипте, так как одна и та же система может спамить несколько запросов, и все ваши потоки будут находиться в спящем режиме, а затем отвечать.
Одно из предложений заключается в сохранении IP-адреса и / или токена сеанса посещения, а затем, если этот IP-адрес / токен сеанса снова посещается слишком рано, вы просто отклоняете / отклоняете запрос в PHP.
Поэтому при каждом запросе проверяйте таблицу базы данных с попытками входа в систему, а затем, если этот идентификатор уже посещался в последнюю секунду (или сколько бы времени вы не хотели, чтобы время ожидания было), просто отправьте ответ 429 Too Many Requests (или ваш соответствующий код ошибки). Если запрос свежий, сохраните его в базе данных и продолжите его обработку.
Других решений пока нет …