Cómo impedir la enumeración de usuarios en la página de registro

10

Tiene un sitio web en el que los usuarios inician sesión y desea evitar la enumeración de usuarios.

En la página de inicio de sesión y en la página de contraseña olvidada, esto puede lograrse mediante una elección cuidadosa de los mensajes de usuario, pero ¿qué pasa con la página de registro de nuevo usuario? Desea asegurarse de que crear una cuenta para un usuario existente sea imposible, pero esto le dice a un atacante que la cuenta ya existe, lo que permite la enumeración.

¿Qué mecanismos se pueden usar para evitar la enumeración de usuarios en el registro de nuevos usuarios?

    
pregunta James_pic 10.10.2014 - 12:51
fuente

5 respuestas

9

Dado que el nombre de usuario es la parte pública, no es el fin del mundo si se puede enumerar, sin embargo, si realmente desea evitar esto, lo más fácil es que utilicen la dirección de correo electrónico como la nombre de usuario Luego simplemente dices que enviaste un enlace al correo electrónico sin importar si ya tienen una cuenta o no.

    
respondido por el AJ Henderson 10.10.2014 - 15:45
fuente
3

Una opción es usar captcha. El nombre de usuario se puede verificar después de un envío y el captcha se actualiza si el nombre de usuario ya está en uso. Esto al menos debería ralentizar el proceso.

Creo que hay otras opciones, pero son complejas (por ejemplo, tienen un tiempo exponencial para devolver la página después de un envío para un usuario de duplicación) o podrían inutilizar la aplicación (bloquear al usuario por un período de tiempo después de X intentos).

Si estás usando correos electrónicos como nombres de usuario, entonces la segunda opción no es tan mala.

    
respondido por el HocusPocus 10.10.2014 - 13:33
fuente
1

La enumeración de usuarios no es tan mala. El nombre de usuario es parte pública, la contraseña es secreta. Por ejemplo, en esta página, todos podemos saber que el usuario James_pic existe en stackexchange. Buscar en Google o escribir a un rastreador simple puede dar a los atacantes una gran cantidad de nombres de usuario, lo que ayuda a limitar el ataque, pero otras medidas de seguridad siguen dificultando la tarea de los atacantes.

La idea es tener una política de seguridad (al menos no escrita, en mente), separar las cosas públicas y secretas y enfocar los esfuerzos en asegurar lo que debe ser secreto. Si desea utilizar el nombre de usuario como "segunda parte del secreto", probablemente sea una forma incorrecta, es mejor que requiera contraseñas dos veces más largas, o autenticación de dos factores, porque mantener los nombres de usuario en secreto es mucho más difícil.

Si, por algún motivo, también necesita mantener los nombres de usuario en secreto (por ejemplo, no quiere que nadie sepa cuántos usuarios se han registrado), quizás sea mejor que asigne un nombre de usuario (por ejemplo, usuario NNNNN o usuario < 10 letras al azar > ) o use apprach con correo electrónico o número de teléfono como nombre de usuario.

    
respondido por el yaroslaff 10.10.2014 - 14:30
fuente
-2

Otra opción es usar el mismo enfoque que en la pantalla de inicio de sesión: decirles que hay algo que está mal, pero que no está mal.

Aquí hay un ejemplo de mensaje de error:

"A error occured with your registration. The cause of the error can be:
- The username is invalid or is already taken. Select Another username.
- The password is of a invalid length. Use a longer password.
- Both passwords do not match. Retype your passwords to ensure you entered them correctly.
- The email adress you entered is already registred or is invalid. Use a Another email adress.
- The captcha is invalid. Write the response for the captcha correctly.
- You have not agreed to the terms of service. Make sure you agree to the terms of service and check the applicable checkbox below.

Correct any errors in registration and try again. We do not disclose the reason why the registration failed for security reasons."

Esto puede ser negativo para la experiencia del usuario porque no saben por qué se rechaza su registro. Pero a veces, la experiencia del usuario se debe intercambiar por seguridad.

    
respondido por el sebastian nielsen 14.10.2014 - 10:15
fuente
-3

Puede agregar una lista masiva de nombres de usuarios públicos a la base de datos y no permitir que los usuarios los elijan y respondan con un error general. De esta manera, un atacante no puede distinguir entre un usuario válido y un inválido.

La desventaja sería: 1- Limitando a los usuarios a elegir su nombre de usuario deliberado. 2- Disminuya el rendimiento agregando una nueva consulta en los nombres de usuario falsos

alguna idea?

    
respondido por el armin 25.01.2016 - 03:54
fuente

Lea otras preguntas en las etiquetas