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.

Foi útil?

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

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.

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