Para Gmail, puede determinar si existe una cuenta simplemente enviando un correo electrónico a una dirección @gmail.com
. Si rebota, esa cuenta no existe.
Esto es cierto para muchos proveedores de correo electrónico. Aquí, los nombres de usuario no se consideran secretos. Si un usuario tiene la dirección de correo electrónico [email protected]
, todos saben que foo
tiene una cuenta en example.com
con el nombre de usuario [email protected]
.
Sin embargo, para la mayoría de los otros sistemas, es una violación de la privacidad revelar los nombres de usuario. Si alguien puede descubrir que [email protected]
tiene una cuenta en nostringsattacheddating.example.org
y la esposa de Bob, Alice, puede intentar registrarse con el nombre de usuario [email protected]
en el sitio web y le dice que el nombre de usuario ya está en uso, entonces es una violación masiva de la privacidad.
Recuerde que la dirección de correo electrónico tiene sus raíces en el proveedor de correo electrónico. No se pierde privacidad si se sabe que [email protected]
tiene una cuenta en example.com
, ya que no hay un punto de referencia para quién es [email protected]
. Lo mismo no ocurre con otro sistema que usa el correo electrónico como nombre de usuario: un usuario con el nombre de usuario [email protected]
en un sitio web que no sea de correo electrónico será el mismo [email protected]
que el registrado en otros sitios web. Hay privacidad que proteger sobre las cuentas que tiene Mallory.
Además, revelar nombres de usuario puede ser útil para un atacante. Esto se conoce como una vulnerabilidad de enumeración de nombre de usuario. Si un atacante sabe qué nombres de usuario existen, luego puede ejecutar un ataque de adivinación de contraseña .
Como atacante si puedo usar su página de inicio de sesión o contraseña olvidada para
Reducir mi lista de 10000 objetivos a 1000 objetivos, lo haré.
También permite a los atacantes atacar a los usuarios del sistema mediante phishing.
Es fácilmente posible diseñar un sistema donde no se puede ejecutar la enumeración de usuarios. Por ejemplo, los procesos de registro y contraseña olvidada son los mismos.
Los pasos son:
- El sistema solicita su nombre de usuario (correo electrónico) en una sola página, sin otros campos de entrada.
- Cuando se envía el formulario, el sistema le pide al usuario que verifique su cuenta de correo electrónico.
- Si la cuenta existe, el correo electrónico contiene un enlace para restablecer la contraseña.
- Si la cuenta no existe, el correo electrónico contiene un enlace de registro.
Como beneficio adicional, ha validado su dirección de correo electrónico al registrarse en caso de que necesiten restablecer su contraseña en una fecha posterior. Cualquier error tipográfico significará que el usuario no puede registrarse en absoluto, lo cual es bueno porque un usuario no está utilizando accidentalmente una cuenta registrada en una dirección de correo electrónico diferente.
Tanto la contraseña como los enlaces de registro contienen un ID aleatorio criptográficamente seguro, por lo que no se pueden seguir sin recibir el correo electrónico. Solo alguien con acceso a la cuenta puede averiguar si un nombre de usuario está registrado o no (es mejor que Bob guarde en secreto las contraseñas de su computadora portátil y su correo electrónico de Alice; sería prudente para él desactivar cualquier sonido de notificación en caso de que Alice intente este proceso cuando también estás en la misma habitación).
Vea algunas de mis otras respuestas para temas relacionados: