Я пытаюсь написать script для предотвращения попыток входа в грубую силу на веб-сайте, который я создаю. Логика выглядит примерно так:
- Пользователь отправляет регистрационную информацию.
- Проверьте правильность имени пользователя и пароля
- Если да, включите их.
- Если нет, запишите неудачную попытку в базе данных. Проверьте, не слишком ли много ошибок в течение заданного периода времени (например: 5 за 5 минут):
- Если да, то приостановите выполнение в течение 10 секунд:
sleep(10)
, затем сообщите пользователю об ошибке входа в систему. - Немедленно сообщите пользователю о неудаче входа в систему.
- Если да, то приостановите выполнение в течение 10 секунд:
Объясняя это сотруднику, меня спросили, как это поможет, если хакер отправит, скажем, 1000 запросов за одну секунду. Будут ли первые 5 возвращаться сразу, а остальные оставшиеся 995 займут всего 10 секунд?
У меня есть подозрительное подозрение, что я не совсем понимаю, как работает HTTP - это ситуация выше, чем возможно, или существует ли ограничение на количество параллельных запросов, которые сервер будет обрабатывать с одного клиента?
Будет ли лучшее решение иметь увеличенное время сна?
sleep($numRequestsInLast5Minutes - 5)
Итак, первые 5 будут быстрыми, а затем каждый последующий будет увеличивать сон.