Claramente, la preocupación aquí es la posibilidad de que un atacante enumere las direcciones de correo electrónico de los usuarios existentes al probar cada combinación posible y ver qué funciona, o posiblemente el riesgo de revelar incorrectamente el hecho de que una dirección determinada esté asociada con un usuario.
Hay varias maneras de hacer esto, y el método de "contraseña olvidada" es solo una. Otra es intentar inscribirse usando la dirección de correo electrónico de otra persona y ver si se rechaza. Y dependiendo de la aplicación, puede haber muchas otras técnicas similares.
El riesgo es muy bajo, ya que la información que obtendrías no suele ser muy útil. Como todo lo que recibe es una respuesta de "sí / no" (es decir, no recupera su nombre de usuario o la última IP conocida, por ejemplo), sería difícil aprovechar este conocimiento en otro ataque. Pero quizás no siempre sea imposible.
Aún así, en muchas aplicaciones creo que se consideraría un riesgo aceptable para los usuarios a cambio de un poco de facilidad de uso en su pantalla de contraseña olvidada, suponiendo que tome algunas precauciones razonables.
Por supuesto, límite de velocidad va a ser crítico. Deberías estar haciendo esto ya. Si una persona intenta esto más de unas cuantas veces en poco tiempo, debe hacer que disminuya la velocidad. Y tal vez si persisten, deberías hacer que se detengan y te llamen en su lugar.
Otra posibilidad es captcha : no son perfectos, pero ciertamente dificultan la automatización.
Y otra requiere más información que solo la dirección de correo electrónico. Quizás deban proporcionar su dirección de correo electrónico y su código postal o apellido o pokemon favorito. Por supuesto, esto abre una pequeña posibilidad de abuso, por lo que un atacante podría usar su servicio para vincular las direcciones de correo electrónico a sus pokemons favoritos, pero tal ataque probablemente sea demasiado costoso para que valga la pena su tiempo, especialmente si incluye la mitigación anterior.