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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top