Por ValidateUser não voltar mais?
-
23-08-2019 - |
Pergunta
Eu estou usando o provedor de associação .NET padrão, e pensei que eu iria ver se alguém poderia brilhar uma luz sobre ela.
Chamada de retorno ValidateUser verdadeira ou falsa. Agora, já que o método aceita um nome de usuário e senha, pode-se argumentar que o resultado de retorno iria reflectir um nome de usuário ou senha inválida. No entanto, se nos aprofundarmos ainda mais, encontramos também está verificando IsLockedOut e IsApproved.
public override bool ValidateUser (string username, string password)
{
MembershipUser user = GetUser (username, false);
/* if the user is locked out, return false immediately */
if (user.IsLockedOut)
return false;
/* if the user is not yet approved, return false */
if (!user.IsApproved)
return false;
......
Na minha aplicação, eu gostaria de fazer uso de IsApproved para meus próprios meios. Simplesmente rolando o meu próprio provedor não vai funcionar porque eu ainda estou restrito a um resultado bool. Criando um usuário nos dá todas as informações que precisamos, então por que não ValidateUser? Estou faltando alguma coisa?
Solução
Eu espero que o que você está vendo é uma decisão de segurança -. Ao restringir as informações retornadas, eles não estão fornecendo informações aos partidos maliciosos
Imagine que você está Cyril Cracker, tentando invadir um site.
Cenário # 1: Você tenta entrar nome de usuário "Admin" com a senha "senha" e o sistema lhe diz no-go. A única informação que temos é que admin / senha não é uma combinação válida.
Cenário # 2: Você tenta entrar nome de usuário "Admin" com a senha "senha" e o sistema lhe diz que nenhum usuário com esse nome é conhecido. Você pode continuar tentando diferentes nomes até encontrar um que é conhecido.
Cenário # 3: Você tenta entrar nome de usuário "Admin" com a senha "senha" e o sistema lhe diz que não a senha é inválida. De repente, você sabe que "Admin" é um usuário válido. Você aprendeu algo útil, e tudo que você precisa para manter a adivinhar é a senha.
Cenário # 4: Você tenta entrar nome de usuário "Admin" com a senha "senha" e o sistema informa que a conta está bloqueada. Agora, você sabe que um nome de usuário e senha válidos, e que a conta está bloqueada. Você pode voltar mais tarde e tente novamente.
Os sistemas que derramar o feijão sobre o que é válido, eo que não é, são conhecidos como sistemas tagarelas , e eles são considerados inseguros por uma boa razão, como eles são mais fáceis de quebrar.
Hope isso é útil.