Предполагая, что вы пишете приложение, предназначенное для использования в Интернете, где вы не можете контролировать регистрацию пользователей, вы можете установить скользящее ограничение на количество попыток сброса пароля, которые предпринимаются для учетной записи пользователя.
Скользящий лимит будет использоваться, чтобы гарантировать, что слишком много запросов на сброс пароля не будет отправлено в течение короткого периода времени. Вы можете ограничить количество пользователей, отправляющих 3 запроса на сброс пароля, но только в течение 1 часа или даже 1 дня; Ваша компания должна быть в состоянии определить оптимальное значение, особенно если пользователи также могут отправлять запросы на сброс пароля другими способами (отправляя электронные письма или вызывая службу поддержки).
Кроме того, вы можете связать сгенерированные токены (я предполагаю, что вы отправляете токены сброса пароля для каждого письма) с заранее определенной датой истечения срока действия, и все такие токены могут использоваться только один раз. В идеале токены не должны длиться более нескольких часов. Высокочувствительные приложения также будут проверять все запросы на сброс пароля в дополнение к обычным попыткам аутентификации.
Наконец, вы также можете установить ограничения на количество запросов на сброс пароля, поступающих с определенного IP-адреса (это атака для предотвращения DoS и не будет работать против DDoS-атак). Само собой разумеется, но связанные учетные записи не должны быть отключены тем временем, если была предпринята попытка сбросить пароль. Это позволит активировать успешную DoS-атаку, при которой злоумышленник может отключить учетные записи, просто отправив запросы на сброс пароля к известной базе данных идентификаторов электронной почты. При установлении лимита вам придется учитывать прокси-серверы интернет-провайдера, иначе вы можете навредить нескольким клиентам.