ANÚNCIO

~/questoes/programacao

Por que é importante usar bcrypt para armazenar senhas em vez de texto plano?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Nest.js e API REST: Autenticação e Autorização na Prática
Para fixar

Por que bcrypt é essencial para proteger senhas em APIs

Conceito central

bcrypt é uma função de hashing especializada em senhas que automaticamente adiciona salt (um valor aleatório) ao processo de criptografia. Isso torna extremamente difícil e custoso descobrir a senha original, mesmo que alguém roube o banco de dados da sua aplicação.

Por que essa resposta faz sentido

bcrypt implementa hashing seguro com salt automático, criando uma barreira computacional que impede ataques de força bruta. Se seu banco for comprometido, um invasor não consegue facilmente converter o hash de volta para a senha original, protegendo os usuários.

Armadilhas comuns

  • Confundir hashing com criptografia: hashing é unidirecional (não pode reverter), enquanto criptografia é bidirecional (pode descriptografar com a chave).
  • Pensar que armazenar senhas criptografadas é suficiente: sem salt e iterações, ainda é vulnerável a ataques de dicionário e força bruta.
  • Acreditar que o tamanho do hash importa: um hash curto é tão efetivo quanto um longo se gerado com salt forte, a segurança vem do algoritmo, não do comprimento.

Entenda as alternativas

A

bcrypt não recupera senhas. Ele é unidirecional: uma vez que você faz o hash, não é possível reverter para a senha original. O usuário digita a senha novamente no login, e bcrypt valida comparando o novo hash com o armazenado.

B

Na verdade, bcrypt usa mais espaço que um texto plano, pois armazena não apenas o hash, mas também o salt e informações do algoritmo. O objetivo nunca foi economizar espaço, mas aumentar a segurança.

C

Exatamente isso. bcrypt gera automaticamente um salt diferente para cada senha, aplicando hashing iterativo que torna computacionalmente caro tentar adivinhar a senha original. Mesmo com equipamento poderoso, levaria muito tempo quebrar um hash bcrypt.

D

bcrypt não sincroniza com OAuth ou outros provedores. Ele é apenas uma função de hashing local. Estratégias OAuth são implementadas separadamente e bcrypt pode ou não ser usada dependendo da sua arquitetura.

Dica prática: Ao implementar autenticação em uma API, sempre use bcrypt (ou argon2) para armazenar senhas. No Nest.js, instale o pacote `bcrypt` e crie um hash na camada de service antes de salvar o usuário: `await bcrypt.hash(password, 10)`. O número 10 é o custo computacional (rounds) — quanto maior, mais seguro, mas mais lento.

Revise pensando: Se seu banco de dados for hackeado e os hashes bcrypt forem roubados, por que um atacante não consegue descobrir as senhas dos usuários apenas olhando para os hashes?