Uma das melhores maneiras de armazenar senhas com segurança é sal e hash. Saltar e hash converte uma senha simples em um valor único que é difícil de reverter. A biblioteca bcrypt permite que você use hash e salt senhas no Node.js com muito pouco esforço.
O que é hash de senha?
Hash de senha significa passar uma senha de texto simples por meio de um algoritmo de hash para gerar um valor exclusivo. Alguns exemplos de algoritmos de hash são bcrypt, scrypt e SHA. A desvantagem do hash é que ele é previsível.
Toda vez que você passar a mesma entrada para um algoritmo de hash, ele gerará a mesma saída. Um hacker com acesso à senha com hash pode fazer engenharia reversa da criptografia para obter a senha original. Eles podem usar técnicas como ataques de força bruta ou mesas de arco-íris. É aqui que entra a salga.
O que é salga de senha?
Salga de senha adiciona uma string aleatória (o salt) a uma senha antes de fazer o hash. Dessa forma, o hash gerado sempre será diferente a cada vez. Mesmo que um hacker obtenha a senha com hash, é impraticável descobrir a senha original que a gerou.
Como usar bcrypt para hash e verificar uma senha
bcrypt é um módulo npm que simplifica o salting e o hashing de senhas.
Etapa 1: instalar o bcrypt
Usando npm:
npm instalar bcrypt
Usando fios:
fio adicionar bcrypt
Etapa 2: importar bcrypt
const bcript = exigir("bcript")
Passo 3: Gerar um Sal
Para gerar o sal, chame o bcrypt.genSalt() método. Esse método aceita um valor inteiro que é o fator de custo que determina o tempo necessário para fazer o hash de uma senha. Quanto maior o fator de custo, mais tempo o algoritmo leva e mais difícil é reverter o hash usando força bruta. Um bom valor deve ser alto o suficiente para proteger a senha, mas também baixo o suficiente para não retardar o processo. Geralmente varia entre 5 e 15. Neste tutorial, usaremos 10.
bcrypt.genSalt (10, (err, salt) => {
// usarsalparacerquilhasenha
})
Etapa 4: hash a senha
Passe a senha simples e o sal gerado para o cerquilha() método:
bcrypt.genSalt (10, (err, salt) => {
bcrypt.hash (plaintextPassword, salt, função(err, hash) {
// Armazena o hash no banco de dados
});
})
Depois de gerar o hash, armazene-o no banco de dados. Você o usará para verificar uma senha e autenticar um usuário que está tentando fazer login.
Em vez de gerar o sal e o hash separadamente, você também pode gerar automaticamente o sal e o hash usando uma única função.
bcrypt.hash (plaintextPassword, 10, função(err, hash) {
// armazena hash no banco de dados
});
Etapa 5: comparar senhas usando bcrypt
Para autenticar usuários, você precisará comparar a senha fornecida com a do banco de dados. bcrypt.compare() aceita a senha de texto simples e o hash que você armazenou, juntamente com uma função de retorno de chamada. Esse retorno de chamada fornece um objeto contendo todos os erros ocorridos e o resultado geral da comparação. Se a senha corresponder ao hash, o resultado será verdadeiro.
bcrypt.compare (plaintextPassword, hash, função(erro, resultado) {
se (resultado) {
// a senha é válida
}
});
Usando Async/Aguardar
Você pode fazer hash e verificar senhas usando async/await da seguinte forma.
assíncronofunçãohashPassword(texto simplesSenha) {
const hash = aguardam bcrypt.hash (plaintextPassword, 10);
// Armazena o hash no banco de dados
}
// compara a senha
assíncronofunçãocompareSenha(texto simplesSenha, hash) {
const resultado = aguardam bcrypt.compare (plaintextPassword, hash);
Retorna resultado;
}
Usando promessas
A biblioteca bcrypt também suporta o uso de promessas.
funçãohashPassword(texto simplesSenha) {
bcrypt.cerquilha(texto simplesSenha, 10)
.then (hash => {
// Armazena o hash no banco de dados
})
.pegar(erro => {
console.log (erro)
})
}
funçãocompareSenha(texto simplesSenha, hash) {
bcyrpt.comparar(texto simplesSenha, cerquilha)
.then (resultado => {
Retorna resultado
})
.pegar(erro => {
console.log (erro)
})
}
Hashing e salga é uma vitória fácil
Você pode usar a biblioteca bcrypt para fazer hash e verificar senhas no Node.js. O hash de senhas minimiza as chances de cibercriminosos usá-las para acessar dados ou serviços confidenciais. Saltar suas senhas com hash as torna ainda mais seguras. Além do hash, sempre valide a força da senha como uma medida de segurança adicional.
Os 8 truques mais comuns usados para hackear senhas
Leia a seguir
Tópicos relacionados
- Programação
- Segurança
- Programação
- JavaScript
- Segurança
- Algoritmos
Sobre o autor
Mary Gathoni é uma desenvolvedora de software apaixonada por criar conteúdo técnico que não seja apenas informativo, mas também envolvente. Quando ela não está codificando ou escrevendo, ela gosta de sair com os amigos e estar ao ar livre.
Assine a nossa newsletter
Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!
Clique aqui para assinar