Простейший подход к усложнению атак методом перебора - обеспечить, чтобы попытка входа в систему (успешная или неудачная) заняла немного времени.
В качестве тривиального примера: при одной попыткезанимает одну миллисекунду, злоумышленник может опробовать словарь с десятью тысячами самых распространенных паролей всего за десять секунд.Если вы гарантируете, что одна попытка займет не менее одной секунды, им потребуется около трех часов.
Конечно, вам нужно найти баланс, вы не хотите причинять неудобства своим законным пользователям.Но обычно им требуется только одна попытка, поэтому задержка, например, в секунду, едва ли будет заметна.И вы могли бы - и, вероятно, должны - сделать вашу реализацию более сложной, например, увеличить задержку после неудачных попыток входа в систему, ограничение на IP-адрес клиента и т. Д.