Solo para estar seguro, el inicio de sesión en mi aplicación actual no almacena los parámetros pasados a los métodos de inicio de sesión o restablecimiento de contraseña. La llamada de registro tiene un parámetro opcional que controla esto, que, cuando se establece en verdadero, reemplaza el objeto de parámetros almacenados con [Redacted]
. Claro, así que pierdo algunos datos, pero tengo sus direcciones IP, y prefiero no arriesgarme a obtener algo tan sensible en texto sin formato.
Si realmente desea registrar este tipo de cosas, le sugiero que cuando registre un intento de inicio de sesión, verifique la base de datos de los usuarios con un nombre que coincida con lo que tiene en el campo de nombre de usuario, y solo almacénelo si tiene una coincidencia. De lo contrario, simplemente lo almacena como "usuario desconocido". Puede ser sofisticado, verificando si este valor contiene eso o lo que sea, pero siempre existe el riesgo de que obtenga combinaciones como [Usuario] [Contraseña] y [UserPas] [espada], en cuyo caso puede verificar la IP y deducir que inadvertidamente almacenó el inicio de la contraseña de alguien en claro. Puede extender esto al [Usuario] [Contraseña] y [Contraseña de usuario] [??] poco probable pero posible, en cuyo caso puede ver "inicio de sesión fallido por contraseña de usuario" seguido de "Inicio de sesión exitoso por usuario" y deducir todode la contraseña del usuario. En general, para estar seguro, diría que no registre nombres de usuario a menos que el inicio de sesión sea exitoso.
Editar para agregar:
La mayoría de los argumentos que las personas publican para registrar el nombre de usuario para intentos fallidos de inicio de sesión son, en mi opinión, mejor manejados a través de otros métodos.
Por ejemplo, se dice que cuando un cliente pregunta "¿por qué no puedo iniciar sesión?", Los nombres de usuario registrados le permitirán señalar errores tipográficos. Esto es cierto, pero no vale la pena correr el riesgo de atrapar también contraseñas; Para ello, redirigiría al usuario de nuevo al formulario de inicio de sesión en caso de error, resaltando el campo de nombre de usuario y repoblando con lo que escribieron para que puedan ver por sí mismos.
Otro argumento fue que te permite identificar intentos de piratería; Una serie de fallas contra un nombre de usuario puede ser un intento de forzar una contraseña. Lo haría al tener una columna "BadLogins" en la tabla Usuarios, que se incrementa cada vez que un inicio de sesión falla con un nombre de usuario que coincide con este usuario, y se restablece a cero en un inicio de sesión exitoso, después de decirle al usuario "ha habido x intentos de inicio de sesión fallidos desde su último inicio de sesión "y aconsejarles sobre qué hacer si no creen que los intentos fueron de ellos. Si desea ser realmente minucioso, podría tener otra columna que almacene el último valor de la columna BadLogins incluso después del inicio de sesión exitoso, y / o una columna que almacene el valor más alto de esta columna, y / o una columna que almacena el número total de inicios de sesión fallidos que ha tenido esta cuenta.