Backend - Aula 12 - Segurança e senhas dos usuários
Segurança do Backend
Visão geral da seção: Nesta seção, o instrutor fala sobre a importância de criptografar senhas para garantir a segurança do sistema. Ele também introduz a funcionalidade Midway do Mongoose, que permite executar funções antes ou depois de determinadas ações no banco de dados.
Criptografia de Senhas
- A criptografia de senhas é importante para trazer mais segurança ao sistema.
- As senhas devem ser criptografadas assim que são salvas no banco de dados.
- Isso impede que alguém com acesso restrito ao banco de dados possa ter acesso à conta do usuário.
- A descriptografia da senha deve ser feita inteiramente no próprio backend.
Funcionalidade Midway
- O Mongoose possui uma funcionalidade chamada Midway que permite executar funções antes ou depois de determinadas ações no banco de dados.
- É possível usar o Midway para rodar uma função para criptografar a senha sempre que um novo usuário for salvo ou quando um usuário existente for modificado.
- Para isso, é necessário usar o método
pree passar uma função como segundo argumento.
- Essa função deve receber como parâmetro uma variável chamada
next, que deve ser chamada no final da função para continuar com a operação.
Criptografia de Senhas
Visão Geral da Seção: Nesta seção, o instrutor explica como usar a função "Salt" do Bcrypt para criptografar senhas e armazená-las com segurança no banco de dados. Ele também aborda a importância de não enviar senhas como resposta em requisições.
Usando a Função "Salt" do Bcrypt
- A função "Salt" é usada para gerar uma string aleatória que será usada como base para criar uma nova senha criptografada.
- É importante usar o "await" antes da função "Salt", pois ela retorna uma Promise.
- Para criptografar a senha, é necessário usar a função "hash", que recebe como argumentos a senha do usuário e o Salt gerado anteriormente.
- Novos usuários podem ser criados com sucesso usando as senhas criptografadas.
Não Enviar Senhas Como Resposta em Requisições
- É importante não enviar senhas como resposta em requisições, mesmo que elas estejam criptografadas.
- Para evitar o envio de senhas em respostas, pode-se usar o método ".select(false)" na definição do modelo de usuário no Mongoose.
Conclusão
Visão Geral da Seção: Nesta seção final, o instrutor resume os principais pontos abordados na lição e destaca a importância da segurança das informações dos usuários.
- Aprendemos sobre a importância de criptografar senhas e armazená-las com segurança no banco de dados.
- Também aprendemos sobre a importância de não enviar senhas como resposta em requisições.
- É fundamental garantir a segurança das informações dos usuários para manter sua confiança e proteger suas informações pessoais.
Transformando um usuário em objeto
Visão geral da seção: Nesta seção, o palestrante demonstra como transformar um usuário em um objeto simples do JavaScript e retirar a senha desse objeto.
Transformando o usuário em objeto
- O objetivo é transformar o novo usuário em um objeto simples do JavaScript.
- Para isso, é necessário chamar o tipo Object para gerar esse objeto.
- É possível compilar todas as informações do novo usuário usando o operador de três pontos.
Retirando a senha do objeto
- A senha deve ser retirada das informações do usuário.
- A senha não precisa ser enviada para nenhuma requisição ou resposta.
Testando a modificação
Visão geral da seção: Nesta seção, o palestrante testa a modificação feita no código anteriormente.
Criando um novo usuário
- Um novo usuário chamado "banana" é criado com um e-mail diferente.
- Ao tentar criar esse novo usuário, verifica-se que a senha não foi enviada.
Atualizando informações de um usuário existente
- Não há novas informações relevantes nesta seção.