Skip to content

Cookies

Os cookies são pequenos pedaços de dados que um servidor envia para o navegador do usuário. O navegador pode armazenar esses dados e enviá-los de volta na próxima requisição para o mesmo servidor. No nosso projeto, são o mecanismo principal para gerenciar sessões de forma segura.

Atributos de Segurança Essenciais

Para que um cookie seja seguro, ele deve utilizar os seguintes atributos:

  1. HttpOnly: Impede que o cookie seja acessado via JavaScript (document.cookie). Isso é a defesa número 1 contra roubo de tokens de sessão via ataques XSS.
  2. Secure: Garante que o cookie só seja transmitido através de uma conexão criptografada (HTTPS).
  3. SameSite: Controla se o cookie deve ser enviado em requisições iniciadas por outros sites.
    • Strict: O cookie só é enviado em requisições do próprio site. Segurança máxima contra CSRF.
    • Lax: O cookie não é enviado em requisições cross-site (como POST), mas é enviado quando o usuário navega para o site (link GET). É o padrão moderno equilibrado.

Como fazer vs Como não fazer

✅ Como fazer

  • Utilize cookies para armazenar tokens de autenticação (JWT) e identificadores de sessão.
  • Configure sempre HttpOnly; Secure; SameSite=Strict (ou Lax se houver necessidade de navegação cross-site legítima).
  • Defina um tempo de expiração (Expires ou Max-Age) condizente com a sensibilidade do sistema.
  • Utilize o prefixo __Host- ou __Secure- no nome do cookie para camadas extras de proteção no navegador.

❌ Como não fazer

  • Nunca armazene dados sensíveis em cookies sem o atributo HttpOnly.
  • Não use cookies para armazenar grandes volumes de dados (limite de ~4KB).
  • Não confie apenas no cookie para armazenar o perfil do usuário; use-o apenas como uma chave (token) para buscar os dados no servidor.
  • Não esqueça de remover (limpar) o cookie no momento do Logout.