Nosso sistema utiliza cookies para gerenciar a autenticação, manutenção de sessões de usuário e armazenamento de dados temporários de algumas funcionalidades do sistema de maneira segura e eficiente. Aqui está uma visão geral de como os cookies são implementados e utilizados no sistema da Muvs.me.
Autenticação e Manutenção de Sessão
- Login do Usuário:
- Quando um usuário faz login, suas credenciais são enviadas para o servidor via uma solicitação HTTP POST.
- O servidor valida essas credenciais consultando o banco de dados MongoDB.
- Após a validação bem-sucedida, um token JWT é gerado contendo informações de autenticação do usuário. Este token é então armazenado em um cookie no navegador do usuário.
- Armazenamento do Cookie:
- O token JWT é armazenado em um cookie seguro (usando o atributo
HttpOnly
para prevenir acesso via JavaScript) e com o atributoSecure
para assegurar que seja transmitido apenas em conexões HTTPS. - O cookie também pode ter uma data de expiração definida, controlando a duração da sessão do usuário.
- O token JWT é armazenado em um cookie seguro (usando o atributo
- Verificação de Autenticação em Requisições:
- Em cada requisição subsequente que requer autenticação, o navegador envia automaticamente o cookie com o token JWT ao servidor.
- O servidor verifica a validade do token JWT para autenticar o usuário antes de processar a requisição.
- Se o token for válido, o servidor permite o acesso ao recurso solicitado; caso contrário, o acesso é negado, e o usuário pode ser redirecionado para a página de login.
- Logout do Usuário:
- Quando o usuário faz logout, o cookie contendo o token JWT é removido do navegador.
- Isso é feito enviando uma resposta HTTP do servidor para o cliente, instruindo-o a excluir o cookie. Isso garante que o token JWT não seja mais enviado em requisições subsequentes, efetivamente encerrando a sessão do usuário.
Armazenamento de Dados Temporários
A Muvs me também utiliza cookies para armazenar dados temporários de algumas funcionalidades do sistema. Estes cookies permitem que certos estados e informações sejam preservados entre requisições, proporcionando uma experiência de usuário mais fluida e eficiente. Por exemplo:
- Preferências do Usuário: Cookies podem ser usados para lembrar preferências temporárias de usuário, como configurações de layout ou filtros de pesquisa.
- Dados de Navegação: Cookies podem armazenar informações temporárias sobre a navegação do usuário, facilitando a retomada de atividades em progresso ou a navegação por múltiplas etapas de um processo.
Segurança dos Cookies
Para garantir a segurança dos cookies e a proteção dos dados dos usuários, implementamos as seguintes práticas:
- Atributo HttpOnly: Impede que o cookie seja acessível via JavaScript, protegendo contra ataques de script entre sites (XSS).
- Atributo Secure: Assegura que o cookie seja enviado apenas através de conexões HTTPS, protegendo contra ataques de interceptação (man-in-the-middle).
- Expiração Controlada: Define um tempo de vida para os cookies, limitando a duração das sessões e reduzindo o risco de utilização de tokens comprometidos.
- Assinatura de Tokens JWT: Os tokens são assinados usando uma chave secreta, o que garante que qualquer modificação do token possa ser detectada, evitando falsificações.