“Lembrar-me neste computador” - Como deve funcionar?
-
21-08-2019 - |
Pergunta
Olhando para os cookies do Gmail é fácil ver o que está armazenado na "lembrar de mim" cookie. O nome de usuário / one-time-token de acesso. Pode ser implementado de forma diferente nos casos em que o nome de usuário é secreto, bem. Mas qualquer que seja ... a coisa não é muito alta segurança:. Você roubar o cookie e você está pronto para ir
A minha pergunta é sobre o lado funcional, no entanto: quando você limpe seus tokens de acesso? Se um usuário faz login sem clicando em "lembrar de mim" em outra máquina, deveria invalidar seus tokens de acesso de todas as máquinas ? Estou perguntando sobre como esta é tradicionalmente implementadas, e também como ela deve ser implementada.
Solução
Eu uso regularmente 2 ou 3 máquinas simultaneamente, e tem "Remember Me" em todos eles. Se um deles desconectado os outros que seria muito chato, então eu não recomendo.
Tradicionalmente, usaria um time-out, o cookie expira após um determinado período de tempo (ou quando o usuário sai).
Tudo depende do seu modelo de segurança. Se você estiver escrevendo um aplicativo interno empresa onde você só esperar um usuário como em um computador, então você pode querer ter restrições mais severas do que gmail.
Além disso, tenha em mente a possibilidade de negação de serviço -. Se uma ação em uma máquina pode forçar outra máquina para ser inutilizável isso poderia ser usado para impedir que um usuário legítimo de tomar o controle de volta em determinados cenários
Outras dicas
Os artigos persistente Entrada Best Practice e Improved persistente Entrada Best Practice são ótimas referências sobre como implementar este tipo de funcionalidade.
Veja também estas perguntas StackOverflow
Registro on partir de outra máquina não deve invalidar o login associado a um cookie em uma máquina diferente. No entanto, se os usuários logsout ou "não é você? O login aqui" isso deve limpar o cookie no qual o usuário está trabalhando.
A propósito de roubar um cookie pode ser feita duro, insistindo em https e tornando-se não para script.
Ao adicionar "; HttpOnly". Ao posto para fora de seu cookie isso fará com que o cookie disponível para javascript por exemplo
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=ig2fac55; path=/; HttpOnly
X-AspNet-Version: 2.0.50727
Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Tue, 26 Aug 2008 10:51:08 GMT
Content-Length: 2838
Você pode ler mais sobre este
O lembrar de mim cookie deve identificar a máquina também. Deve estar relacionada com a máquina, porque há lugares onde você deseja ser lembrado e outros lugares onde você não (casa vs trabalho).
A data de vencimento é definido geralmente para um período razoável (duas semanas) ou depois que o usuário explicitamente desconectado da máquina,
O que eu gostaria de fazer é ligar cada sessão para um endereço IP. Se a um token de sessão é enviada de um IP diferente do que você tem para isso, rejeitá-la.
Os tokens de acesso deve ser específico IP para que eles não podem ser facilmente transferidos entre máquinas.
Eles também devem ser implementadas de uma forma que permite aos usuários ver o que as máquinas têm tokens de ativos por diante.
Os sites que escolher para matar um símbolo, uma vez que um novo é criado em outro computador - fazer a escolha que seus usuários não vão acessar o seu serviço em vários computadores - ou se eles fazem - que seus justifica uso tornando-os login novamente.
A política que empregam realmente depende dos dados que você está segurando e as necessidades do usuário.