Quais são algumas das práticas recomendadas para autenticação na Web baseada em cookies?

11

Estou trabalhando em um pequeno projeto paralelo usando CGI e Python (escalabilidade não é um problema e precisa ser um sistema MUITO simples).

Eu estava pensando em implementar autenticação usando cookies e queria saber se havia alguma prática recomendada estabelecida.

Quando o usuário se autenticar com êxito, desejo usar cookies para descobrir quem está conectado. O que, de acordo com as melhores práticas, deve ser armazenado em um cookie?

rdasxy
fonte

Respostas:

12

Melhor caso: um único ID relacionado a todas as outras informações necessárias, que por sua vez são armazenadas em um banco de dados.

Há momentos em que faz sentido colocar outras informações, mas elas são raras. Você sempre precisa se perguntar por que, pelo menos cinco vezes .

O SSL protegerá seus usuários contra o seqüestro de sessão, mas, mesmo assim, nunca armazene informações confidenciais não criptografadas em um cookie. É, essencialmente, armazenado em texto sem formatação no disco rígido.

Por fim, e mais importante, proteja seu usuário contra ataques XSS e CSRF .

A proteção XSS geralmente é tão simples quanto ter cuidado de onde você inclui o Javascript, porque o Javascript em outro servidor pode ser alterado sem o seu conhecimento e esse Javascript tem acesso aos dados do cookie. Portanto, se você estiver usando a rede de entrega de conteúdo da Evil Corp para veicular seu script jQuery, eles poderão adicionar repentinamente código para enviar os cookies de seus usuários. Você não saberia; seus usuários não saberiam.

Faça o download de scripts e os sirva em seu próprio servidor ou use CDNs muito confiáveis, como Google ou Yahoo.

A proteção CSRF geralmente é feita com um valor aleatório em um campo oculto em um formulário. O valor é mantido na sessão para que, quando o formulário for reenviado, você possa verificar se ele veio do mesmo computador.

A maioria das estruturas da Web agora possui técnicas muito simples para incluir esse token.

pdr
fonte
3
  • Use os sinalizadores securee httpOnly.
  • Codifique os dados do cookie da sessão e assine criptograficamente os dados codificados com um MAC. Verifique a assinatura no servidor toda vez, antes de se preocupar em decodificar os dados do cookie da sessão. (O Rails faz isso por padrão.)
yfeldblum
fonte