Jump to content
  • 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

Recommended Posts

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?

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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).

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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).

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.