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:
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.Secure: Garante que o cookie só seja transmitido através de uma conexão criptografada (HTTPS).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(ouLaxse houver necessidade de navegação cross-site legítima). - Defina um tempo de expiração (
ExpiresouMax-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.