¿Cómo puede evitar que se recojan las direcciones de correo electrónico de un formulario de registro?

11

Cuando accede al formulario de inicio de sesión de un sitio web e ingresa las credenciales incorrectas, el sitio web le puede dar uno de los tres mensajes de error:

  1. Tu correo electrónico es incorrecto

  2. Su contraseña es incorrecta

  3. Su contraseña o es incorrecta

Tengo lea que la práctica más segura es mostrar solo el tercer mensaje de error, ya que evita que los usuarios malintencionados utilicen el formulario de inicio de sesión para averiguar qué correos electrónicos ya están en su base de datos. Si pueden obtener esa información a gran escala, pueden vender las direcciones de correo electrónico a los spammers o intentar iniciar sesión como usuarios.

Además del formulario de inicio de sesión, hay otras dos formas comunes de descubrir correos electrónicos válidos.

El formulario de contraseña olvidada en un sitio web le permite ingresar su correo electrónico y recibir un enlace de restablecimiento de contraseña a su dirección de correo electrónico. Si ingresa un correo electrónico inexistente en el formulario, el sitio web puede darle uno de dos mensajes:

  1. Ese correo electrónico no existe

  2. Se envió un enlace de restablecimiento de contraseña a su dirección de correo electrónico, si existe

Por el mismo motivo, la mejor práctica de seguridad aquí es mostrar solo el segundo mensaje, incluso si ese correo electrónico no existe.

El formulario de registro de cuenta de usuario le permite crear una nueva cuenta en el sitio web. Requiere que ingrese varios datos, como una dirección de correo electrónico y una contraseña.

Si intenta registrarse con una dirección de correo electrónico que ya está siendo utilizada por otra cuenta, el sitio web puede indicarle que la dirección de correo electrónico ya está en uso.

Muchos sitios web grandes, incluido Stack Exchange , lo hacen de esa manera, aunque cause lo mismo. problemas que se enumeran arriba.

Aquí están mis preguntas , ambas relacionadas con ese problema:

  1. ¿Cómo puede un sitio web permitir a los usuarios registrarse sin filtrar las direcciones de correo electrónico de sus otros usuarios?

  2. ¿Hay algún beneficio en el manejo correcto de los formularios de inicio de sesión y los formularios de contraseña olvidada si el formulario de registro tiene este problema? En otras palabras, si ya puede obtener las direcciones de correo electrónico de todos desde el formulario de registro, ¿no son las protecciones de los otros dos formularios una molestia inútil para los usuarios finales?

pregunta Pikamander2 06.02.2016 - 02:27
fuente

3 respuestas

9

El escenario de recolección de correo electrónico que describe es realmente lento y no es probable que ocurra , al menos como una forma de reunir muchas direcciones de correo electrónico. El atacante necesitaría una fuerza bruta muy larga contra tu forma. Como ya lo dijo Symcbean, los correos electrónicos ya son muy baratos si los compra y es bastante fácil bloquear tales intentos si alguien intenta usar este formulario repetidamente.

La forma estándar de recopilar correos electrónicos es mediante el uso de herramientas como theharvester para recopilar rápidamente todos los correos asociados con un dominio (por ejemplo, empresa).

En el caso de restablecimiento de contraseña , usted ya respondió parte de su pregunta, siempre debe devolver un comentario neutral y, si lo desea, implementar un mecanismo de bloqueo que bloquee una IP después de demasiados intentos. registrarse / restablecer.

Si alguien quiere registrarse , puede:

  • primero solicite su correo de registro
  • luego envíe un enlace de registro al correo
  • el proceso de registro adicional continuará desde el enlace

De esta manera no es posible adivinar si un correo electrónico ya está registrado.

    
respondido por el AdHominem 06.02.2016 - 14:29
fuente
1

AdHominem tiene razón; El uso de la verificación por correo electrónico evita este vector de ataque. Aunque es un desafío de usabilidad. Creo que para muchos sitios, la forma correcta (pero incómoda) de hacerlo es la siguiente:

  1. Permita que el usuario complete todo el proceso de registro y comience a usar el sitio con una cuenta temporal de bajo privilegio. Probablemente debería evitar que realicen acciones que estén asociadas públicamente con la cuenta (por ejemplo, publicando en un foro).
  2. Si la dirección de correo electrónico era nueva, envíele un correo electrónico que les permita verificar la cuenta y vincularla a ese correo electrónico.
  3. Si la dirección de correo electrónico ya estaba registrada, envíeles un enlace de recordatorio / restablecimiento de contraseña y dígales que la sigan si necesitan acceder a su cuenta existente.

Esto puede ser complicado, especialmente si permites que la cuenta temporal realice cualquier acción que el usuario quiera reasignar a su cuenta existente una vez que la desbloquee. La forma más sencilla sería evitar que el usuario haga nada hasta que verifique su dirección de correo electrónico. Pero sospecho que obligarlos a cambiar a su cliente de correo y, posiblemente, esperar varios minutos reduce las tasas de inscripción, razón por la cual muchos sitios solicitan repetidamente, pero no requieren, verificación de correo electrónico.

Otra posibilidad es que si alguien se registra con una dirección de correo electrónico que existe actualmente, usted:

  1. Cree su cuenta y muéstrela usando la dirección de correo electrónico solicitada, pero en realidad no la vincule a esa dirección (es decir, no la use para restablecer contraseñas o anuncios por correo electrónico). Un atacante no podrá notar la diferencia porque no puede verificar la dirección.
  2. Envíe un correo electrónico a esa dirección con las instrucciones para restablecer la contraseña en su cuenta existente e informarles las consecuencias de tener una cuenta duplicada que no pueda recibir un correo electrónico.
  3. Nunca hagas nada más al respecto.

Estos escenarios suponen que solo está utilizando correos electrónicos para el contacto entre el administrador del sitio y el usuario. Si los está utilizando para otro propósito, como imponer unicidad o mostrar una dirección de correo electrónico verificada a otros usuarios del sitio, entonces necesita un enfoque de verificación de correo electrónico primero.

    
respondido por el octern 06.02.2016 - 18:05
fuente
0

En cambio, podríamos usar un nombre de usuario en el formulario de inicio de sesión sin perder el correo electrónico registrado, y enviar una alerta a los usuarios en caso de que haya un intento fallido de inicio de sesión en su cuenta para advertirles que hay alguien que quiere conectarse. ...

Dar esa información / pistas solo hará que la fuerza bruta sea más fácil para un atacante, por ejemplo, si le doy a un sitio web (encontrará que para wordpress) el administrador de inicio de sesión y una contraseña arbitraria me contestarán con "la contraseña es incorrecto "para poder lanzar un ataque de fuerza bruta para la cuenta de administrador ...

Otra solución que podría solicitar para cambiar el correo electrónico en el formulario de registro sin dar una razón real como lo hace Google. Muchos nombres de usuarios, por ejemplo, alice.bob , incluso si no existen o están registrados, no significa que la haya tomado Mme Alice.Bob (muchas veces pido un nombre de usuario para gmail y Google shows El mensaje indica que no está disponible y propone algo como username1253 , y si verifica enviando correos electrónicos o G + no los encontrará)

    
respondido por el Badr Bellaj 06.02.2016 - 13:09
fuente

Lea otras preguntas en las etiquetas