Где устанавливаются неудачные попытки входа в систему / задержки регулирования, если не в PHP? - PullRequest
0 голосов
/ 30 января 2019

У меня такой же вопрос, как и тот, на который был дан ответ 9 лет назад, и приведенные ответы совершенно бесполезны ( Как отложить попытки входа в систему после слишком большого количества попыток (PHP) )

Как вы можете отложить попытки входа в систему против ботов без использования sleep ()?Кажется очевидным сбивающее с толку желание предотвратить DoS-атаки со стороны клиентского кода ... Я не понимаю, где я могу установить «задержки» или «http-запрос на вход в систему» ​​для получения с фактического сервера / apache иличто-то.

Пожалуйста, будьте снисходительны, я оставил это на несколько дней из-за выгорания и вернулся к нему сейчас, все еще не понимая этого.
Я понимаю и реализую часть регулирования - я знаю, как настроитьдо БД и таблиц для захвата каждой неудачной попытки, но не как настроить apache / сервер / все, что нужно настроить, чтобы «приостановить» сценарий (сценарий, который обрабатывает форму входа) для этого текущего пользователя / IP-адреса ввойти в систему в течение следующих x секунд?

Это сделано с помощью PHP?Или вы настраиваете свою конфигурацию apache или правило htaccess, чтобы сделать это?Мне очень нужна помощь с этим ...

1 Ответ

0 голосов
/ 30 января 2019

Вы не должны использовать "sleep ()" в самом скрипте, так как одна и та же система все еще может спамить несколько запросов, и все ваши потоки будут удерживаться в спящем режиме, а затем отвечать.

Одно из предложений - сохранитьIP-адрес и / или токен сеанса посещения, а затем, если этот IP-адрес / токен сеанса посещается снова слишком рано, вы просто отклоняете / отклоняете запрос в PHP.

Поэтому при каждом запросе проверяйте таблицу базы данныхс попытками входа в систему, а затем, если этот идентификатор уже посещался в последнюю секунду (или сколько бы времени вы не хотели, чтобы время ожидания было), просто отправьте ответ 429 Too Many Requests (или ваш соответствующий код ошибки).Если запрос свежий, сохраните его в базе данных и продолжите его обработку.

...