Mitigar volver a enviar el correo electrónico de confirmación

3

Al escribir el código del servidor para volver a enviar la página de confirmación , algo me vino a la mente: un atacante podría realizar varias solicitudes para /resendemail?user=blah (URL de ejemplo) e inundar a dicho usuario con correos electrónicos de registro (por supuesto, como siempre que el usuario exista y no haya confirmado su correo electrónico).

Mi primera idea fue limitar la solicitud por sesión, sin embargo, esto se puede omitir muy fácilmente. El límite por IP es demasiado implemento y también se puede omitir (es decir, usar varios proxies), por lo que estoy seguro de que debe haber algo lo suficientemente simple como para mitigar este tipo de explotación.

    
pregunta Nacib Neme 01.03.2015 - 20:48
fuente

4 respuestas

7

Límite de tasa por usuario o por dirección de correo electrónico. Dado que es raro reenviar correos electrónicos de confirmación, establecer el límite en un nivel absurdamente bajo (por ejemplo, dos reenvíos por día) debería ser suficiente para evitar inundar a un usuario.

    
respondido por el Mark 01.03.2015 - 22:18
fuente
5

Agregue una marca de tiempo al campo de correo electrónico, si un correo electrónico ha sido reenviado en los últimos x minutos, no envíe otro correo electrónico. No usaría un captcha ya que los bots son mejores para resolverlos que los humanos, de todos modos.

    
respondido por el wireghoul 01.03.2015 - 22:19
fuente
3

En el trabajo, he implementado un sistema muy rudimentar y básico en un formulario de contacto.

Cada IP solo puede enviar de 5 a 9 correos electrónicos por día (número aleatorio generado por IP).

Puede adaptar esto y agregar algunas opciones a (por ejemplo), permitir solo 1 o 2 por día en caso de que el usuario lo solicite de manera constante.

O bloquee y solo permita reenviar si se introduce un código específico.

Envías un código de recuperación con un enlace específico.

Luego esa persona visita el enlace, introduce el código y solo entonces la persona puede recuperar la contraseña.

    
respondido por el Ismael Miguel 02.03.2015 - 02:06
fuente
0

Además de la limitación de tarifas, puede hacer que su infraestructura de correo electrónico informe a su aplicación si el servidor de destino aceptó el correo electrónico o no; y límite de velocidad solo si los correos electrónicos se entregan correctamente.

Una buena ventaja de este método es que su aplicación puede decirle al usuario si el correo electrónico que envió realmente lo recibió y lo está esperando en su bandeja de entrada o si debe intentar una dirección de correo electrónico diferente.

    
respondido por el user42178 02.03.2015 - 11:13
fuente

Lea otras preguntas en las etiquetas