1
resposta

Tradeoff JWT

Olá, boa tarde!
Finalizei o curso e gostaria de entender melhor o trade-off em se usar o JWT dessa maneira por favor. Pois, se continuamos tendo de consultar o usuário no banco a cada requisição, qual seria a vantagem de usar esta abordagem? E tbm gostaria de saber qual seria a melhor maneira de receber dados sensíveis como senha vindos do frontend para logar um usuário. Talvez uma criptografia reversível para obtê-la no backend?

1 resposta

Olá, Ricardo! Boa tarde!

Parabéns por ter finalizado o curso!

No curso foi usada uma técnica de sempre fazer a consulta no banco de dados, com o objetivo de sempre ter o dado "mais atualizado", para os casos do usuário ser bloqueado, ter seu perfil alterado, etc. Dessa forma, a cada requisição será verificada a questão das permissões do usuário. O lado negativo é que terão consultas ao banco de dados a cada requisição.

A outra alternativa seria não consulta no banco, com o risco do usuário continuar tendo acesso a algo que já não deveria ter, nos casos de atualização de suas permissões.

São duas soluções distintas e não tem uma melhor do que a outra. Tudo depende do contexto e necessidades do projeto.

Sobre a recepção de dados sensíveis como senhas, é obrigatório garantir que a comunicação entre o frontend e o backend seja segura, sendo que o uso de HTTPS é a solução para criptografar os dados em trânsito. Para armazenar senhas de forma segura, você deve usar um algoritmo de hash seguro, como o bcrypt, que foi usado no curso, em vez de criptografia reversível. O bcrypt é projetado para ser lento, o que ajuda a proteger contra ataques de força bruta.

Espero ter ajudado e bons estudos!