Pergunta

Eu só implementou um recurso de "lembrar de mim" para um login de usuário em um site. A maioria dos conselhos era ter o ID de usuário armazenado em um cookie, e depois ter algum chave aleatória de comprimento, unguessable. Se ambos jogo, o usuário é considerado autenticado.

Quer ter duas cordas realmente ajuda? uma chave mais não faria exatamente a mesma coisa?

Em outras palavras, não são duas chaves igualmente suscetíveis a ataques como uma chave mais longa? (Eu imagino que seria o comprimento total das chaves, independentemente de quantos você tem)

Nota: Pode haver algumas questões de eficiência consulta DB, também aqui, por exemplo, olhando para um grande UUID no DB não é tão fácil como olhar para cima um número pequeno. (Em uma nota tangencial, o Gmail utiliza um número de seis dígitos como seu login do one-time token de, juntamente com o nome de usuário.)

Foi útil?

Solução

discussão robusta de que nesta SO enfiar .

... o usuário é considerado autenticado.

provavelmente deve ler autenticado mas com authoriziation limitado.

Per comentário: Um pouco mais seguro, já que é um uso do tempo e é difícil de adivinhar. Então, se o cookie está comprometido, o atacante tem de agir rapidamente ou o token será invalidada pelo loging utilizador legítimo enquanto o ID de usuário não pode mudar por um longo tempo.

Outras dicas

Não sou especialista cripto, mas contanto que você buscar por tentativas-forçando bruta, você deve ser capaz de usar uma chave curta (como 6 dígitos do Gmail). A vulnerabilidade real é as pessoas ouvindo quando um usuário faz login (ex. SideJacking).

Em sites que eu criei anteriormente fiz uso de um user_id e um hash salgado da senha do usuário. A principal razão que eu usei dois campos para autenticar um usuário é porque ele me salvou o trabalho de adicionar outra tabela (e, portanto, o que complica o design de banco de dados). Com a user_id também está sendo armazenada no cookie que eu poderia fazer um look-up indexada em usuários mesa e eficiente combinar o hash salgado para o usuário. Claro que você pode concatenar tanto o user_id e o hash em um valor e apenas loja que no cookie.

Se você só tem uma corda unguessable aleatório, então você teria que ter uma tabela separada para associar a seqüência aleatória com um user-id e fazer um outro olhar-up para esse usuário particular.

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