Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

RuiGomes

Função Keep Me Logged In

Mensagens Recomendadas

RuiGomes

Tenho um sistema de login a funcionar com a password hashed em sha256 e um salt, sendo os dois novamente hashed juntos.

Quero implementar um sistema de Keep Me Logged In mas tenho algumas dúvidas quanto à segurança..

Será que é seguro guardar o username e a hash da password num cookie e se não houver login feito verificar esses cookies? Ou será inseguro?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Tudo o que vem do cliente (cookies incluidos) é inseguro.

Lembra-te que é possível copiar cookies de um computador para outro.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Segurança e facilidade de uso são, em grande medida, incompativeis.

Ou tens uma ou tens outra; se aumentas uma diminuis a outra e vice-versa.

O meu conselho: se o teu site não mexer em dinheiro ou coisas pessoais dos utilizadores (ou outras coisas em que a segurança seja importante) não te preocupes com a segurança e melhora a facilidade de uso. Ou seja, usa os cookies como sugeriste na primeira mensagem.

Por outro lado, se o teu site tem dinheiro ou coisas pessoais ... nao facas o "Keep me Logged in" (o Amazon, por exemplo, nao tem essa opcao -- e, mesmo assim, pede a password várias vezes quando fazes uma compra).


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

Diria que não deves guardar a hash da password no cliente, visto que dessa forma qualquer utilizador que a copiasse passava a ter acesso à conta até que o utilizador alterasse a password.

O que deves usar é uma chave de sessão (uma string aleatória, que quando o utilizador faz logout, ou faz novamente login, é invalidada).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

O que deves usar é uma chave de sessão (uma string aleatória, que quando o utilizador faz logout, ou faz novamente login, é invalidada).

Pois ... aumentas a seguranca e diminuis a facilidade de uso :)

Nota que com a chave de sessao nao podes ter o "Keep me Logged In" como o Rui Gomes pretende.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

Pois ... aumentas a seguranca e diminuis a facilidade de uso :)

Nota que com a chave de sessao nao podes ter o "Keep me Logged In" como o Rui Gomes pretende.

Porquê? Ou o "Keep me Logged In" não é o que penso que é, ou penso que as chaves de sessão são a solução habitual.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Porquê? Ou o "Keep me Logged In" não é o que penso que é, ou penso que as chaves de sessão são a solução habitual.

porque quando fores a ligar novamente o browser ou retornar ao site após a limpeza de sessão por parte do servidor (timeout), não existe forma de comprovar que o valor de sessão enviado pelo cliente é válida, isto se não usar uma base de dados e efectuar restauro desse id.

no entanto, ficas novamente exposto a duplicação do número de sessão.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

porque quando fores a ligar novamente o browser ou retornar ao site após a limpeza de sessão por parte do servidor (timeout), não existe forma de comprovar que o valor de sessão enviado pelo cliente é válida, isto se não usar uma base de dados e efectuar restauro desse id.

no entanto, ficas novamente exposto a duplicação do número de sessão.

Obviamente que guardas a chave de sessão numa BD. A vantagem de usar uma chave de sessão em vez do hash da password, é que mesmo que alguém copie a tua chave de sessão, quando fizeres logout, ou quando fizeres login, a mesma deixa de ser válida. Caso contrário, só deixava de ser válida quando mudasses a password (o que normalmente acontece com muito menos frequência).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Hmmm ... eu interpretei sessao como no conceito do SESSION do php e, erradamente, assumi que seria iniciada uma nova sessao sempre que o utilizador desligasse o computador (se a gestao dos cookies pode ser feita para a sessao se manter ao desligar o computador).

De qualquer maneira, a sessao seria baseada em cookies (que podem ser roubados: ver session hijacking).

Mas, sim. O uso de chave de sessao é mais seguro que guardar o hash da password num cookie sem diminuir a facilidade de uso.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.