Skip to content

Release note - v1.6.1

Latest

Choose a tag to compare

@ericshantos ericshantos released this 23 Aug 11:40
6ab324b

Objetivo da Versão

Esta versão tem como principal objetivo corrigir a forma de armazenamento do token JWT, utilizado para autenticação de usuários. A mudança visa melhorar a segurança e a usabilidade do sistema de autenticação ao modificar o método de armazenamento do token, garantindo um melhor controle e mitigando possíveis riscos de segurança.

Principais Alterações

  1. Mudança no Método de Armazenamento do Token JWT

    • Antes: O token JWT era armazenado nos cookies do navegador. Isso poderia potencialmente expor o token a ataques de Cross-Site Scripting (XSS) e dificultar o controle granular de acesso ao token.
    • Depois: O token JWT agora é armazenado no localStorage do navegador. Essa abordagem permite que o token seja menos suscetível a ataques de XSS, pois o localStorage não é enviado automaticamente em requisições HTTP como os cookies. Além disso, essa mudança facilita a manipulação do token no lado do cliente.
  2. Atualizações na Função de Exibição de Modais (showModal)

    • A função showModal foi otimizada para simplificar o controle da exibição do modal de alerta. Antes, o código gerenciava manualmente a largura da barra de progresso com vários cálculos e intervalos.
    • Melhorias:
      • Redução de complexidade ao eliminar o controle manual da barra de progresso.
      • Uso de setTimeout para ocultar o modal de forma mais direta, melhorando a legibilidade e manutenção do código.
  3. Refatoração de Código

    • Remoção de Código Redundante: Funções duplicadas, como as que realizavam requisições e manipulavam modais, foram unificadas e simplificadas.
    • Aprimoramento da Estrutura de Código: A função makeRequest foi ajustada para utilizar axios com async/await, proporcionando uma maneira mais moderna e eficiente de lidar com requisições HTTP, incluindo melhor tratamento de erros.
    • Código Mais Limpo e Eficiente: Com a remoção de código redundante e não utilizado, o código não só ficou mais legível, mas também mais performático, reduzindo o número total de linhas em 34.

Impacto das Mudanças

  • Segurança Melhorada: Ao armazenar o token JWT no localStorage em vez de cookies, o sistema de autenticação se torna menos vulnerável a ataques de XSS, já que o localStorage não é automaticamente enviado com requisições HTTP. Além disso, o controle do token é mantido inteiramente no lado do cliente.
  • Usabilidade e Experiência do Usuário: A melhoria no gerenciamento de modais oferece uma experiência mais suave para o usuário, sem delays ou comportamentos inesperados.
  • Manutenção Simplificada: A refatoração do código torna o arquivo JavaScript mais fácil de entender e modificar, facilitando futuras manutenções e introduções de novos recursos.

Instruções de Atualização

  1. Atualizar Dependências: Certifique-se de que o axios está corretamente instalado e configurado no seu projeto, caso não esteja, adicione-o usando npm install axios.
  2. Testar a Nova Implementação de Login: Verifique se, após o login bem-sucedido, o token JWT é armazenado corretamente no localStorage e não em cookies.
  3. Verificação de Modais: Teste a funcionalidade dos modais para garantir que eles exibem corretamente as mensagens de erro e sucesso, e que se comportam conforme esperado ao ocultar após o tempo especificado.

Próximos Passos e Melhorias Futuras

  • Monitoramento Contínuo da Segurança: Considerar a implementação de medidas adicionais para proteger o localStorage contra possíveis acessos não autorizados, especialmente em ambientes de alto risco.
  • Implementação de Tokens de Atualização: Introduzir um sistema de refresh tokens para melhorar ainda mais a segurança e experiência de usuário, permitindo sessões persistentes sem a necessidade de re-autenticação constante.
  • Testes Automatizados: Adicionar testes automatizados para validar o comportamento do login e armazenamento de tokens, garantindo que futuras mudanças no código não introduzam regressões.

Agradecimentos

Agradeço a @matteusmoreno por sua contribuição significativa para esta versão e por ajudar a melhorar a segurança e usabilidade do nosso sistema de autenticação.