Sessão de usuário

Token de autenticação

Geração

  • Deve ser sempre um valor totalmente randômico (e.g. GUID).
  • Deve ser no mínimo 32 caracteres.
  • Nunca deve ser trafegado via URL, apenas no body ou header de uma requisição.
  • Deve sempre ser trafegado via HTTPS.

Armazenamento

Para ter controle de sessão via backend, normalmente armazenamos o token em algum banco de dados ou banco em memória (e.g. Redis). Os primeiros cuidados que devemos tomar com isso são:
  • o software que armazena o token deve ter acesso restringido por autenticação e por rede;
  • os logs dessa aplicação não podem mencionar dados sensíveis.

Dados da sessão

Normalmente precisamos guardar alguns dados na sessão para validarmos algum fluxo (e.g. permissões, id na aplicação). Devemos ao máximo evitar guardar informações pessoais ou sensíveis. Podemos nos limitar aos seguintes dados:
  • ID do usuário no sistema;
  • seu perfil ou permissões;
  • data do último acesso;
  • client do último acesso (sistema/app/browser).

JWT

Em aplicações que utilizam o JWT devemos garantir que:
  • não hajam dados sensíveis nem pessoais no conteúdo;
  • não hajam dados desnecessários que trafegam em logs dos serviços do sistema.

Referências