Estoy investigando sobre la adivinación de cuentas de usuarios y quería hacer una pregunta sobre algunas "malas prácticas".
Mi pensamiento generalmente es que se trata de un compromiso entre la gran funcionalidad de usuario / UX y la seguridad. Por ejemplo, podría crear un servicio web para el usuario que verifique si existe un correo electrónico, y cuando un usuario está intentando registrarse, puedo (para su conveniencia) informarle que esta cuenta ya existe (en lugar de tener que pasar por el proceso completo solo para descubrir al final que se toma la cuenta).
Además de un formulario de inicio de sesión, decirle al usuario "este nombre de usuario / contraseña no es válido" en lugar de "que el nombre de usuario no existe" ayudará a reducir las posibilidades de un ataque.
Al final del día (para el registro), mi idea fue que el servicio web mencionado anteriormente es una mala idea, pero debe haber alguna forma de asegurarse de que el usuario sepa que el nombre está tomado / disponible.
¿Cuáles son algunas de las técnicas que las personas hacen para asegurar esto? Pensé que las solicitudes de servicio de limitación de velocidad desde la perspectiva del servidor es una buena idea. ¿Es esto común? Por ejemplo, tengo algún tipo de medio para eliminar ese servicio web utilizando un ataque de diccionario. Después de un tiempo suficiente, podría tener una lista completa de direcciones de correo electrónico que sean válidas y ahora solo necesito adivinar las contraseñas en lugar de las dos. Pero si el servicio es limitado, de modo que después de que N solicite, la respuesta se ralentice o solicite un CAPTCHA, sería más difícil lograrlo (ahora necesito usar direcciones IP únicas, etc.).
Quería ver si mi pensamiento estaba aquí o si alguien podría agregar algo a esto.
¡Por cierto, noté que Microsoft no hace esto! Cuando vas a live.com y escribes un nombre de usuario inventado, te dice que el nombre de usuario no existe. Cuando intenta un nombre de usuario válido pero una contraseña incorrecta, le dice que la contraseña es incorrecta. ¿No es esta una mala práctica? ¿Cuáles son algunas de las razones por las que permiten esto? ¿Porque es un servicio popular y obtener una dirección de correo electrónico en vivo es bastante fácil? ¿O tal vez junto con mucha seguridad del servidor?