Para garantir a segurança, o login no meu aplicativo atual não armazena parâmetros passados para os métodos de login ou redefinição de senha. A chamada de log possui um parâmetro opcional que controla isso, que, quando definido como true, substitui o objeto de parâmetros armazenados por [Redacted]
. Claro, perdi um pouco de dados, mas tenho os endereços IP deles e prefiro não arriscar obter algo tão sensível em texto simples.
Se você realmente deseja registrar esse tipo de coisa, sugiro que, ao registrar uma tentativa de login, verifique no banco de dados se há usuários com um nome correspondente ao que você possui no campo nome de usuário e armazene-o apenas se houver uma correspondência. Caso contrário, você apenas o armazena como "usuário desconhecido". Você pode ser chique, verificando se esse valor contém isso ou algo assim, mas sempre há o risco de obter combinações como [Usuário] [Senha] e [UserPas] [espada]; nesse caso, você pode verificar o IP e deduzir que você inadvertidamente armazenou o início da senha de alguém de forma clara. Você pode estender isso para o improvável, mas possível, [User] [Password] e [UserPassword] [??]; nesse caso, você poderá ver "login mal sucedido por UserPassword" seguido de "Login bem-sucedido por usuário" e deduzir tudoda senha do usuário. Geralmente, para estar seguro, eu diria para não registrar nomes de usuário, a menos que o login seja bem-sucedido.
Edite para adicionar:
A maioria dos argumentos que as pessoas estão postando para registrar o nome de usuário devido a tentativas de login com falha é, na minha opinião, melhor manipulada por outros métodos.
Por exemplo, foi dito que quando um cliente pergunta "por que não consigo fazer logon?", Os nomes de usuário registrados permitem que você aponte erros de digitação. Isso é verdade, mas não vale a pena arriscar também a captura de senhas; Eu faria isso redirecionando o usuário de volta ao formulário de logon em caso de falha, destacando o campo de nome de usuário e preenchendo-o novamente com o que eles digitaram, para que possam ver por si mesmos.
Outro argumento foi que ele permite identificar tentativas de hackers; uma série de falhas contra um nome de usuário pode muito bem ser uma tentativa de forçar uma senha com força bruta. Eu faria isso tendo uma coluna "BadLogins" na tabela Usuários, que é incrementada toda vez que um logon falha com um nome de usuário correspondente a esse usuário e é redefinida para zero em um logon bem-sucedido, depois de informar ao usuário " x tentativas malsucedidas de login desde seu último login "e aconselhando-as sobre o que fazer se não acharem que as tentativas foram delas. Se você quiser ser realmente completo, poderá ter outra coluna que armazene o último valor da coluna BadLogins, mesmo após o login bem-sucedido, e / ou uma coluna que armazene o valor mais alto dessa coluna e / ou uma coluna que armazena o número total de logins com falha que esta conta já teve.