Autenticação
Provar quem é o usuário e, depois, decidir o que ele tem direito de fazer.
Autenticação
Um formulário de login que responde "este e-mail não existe" em 12 milissegundos e "senha incorreta" em 180 milissegundos revela gratuitamente quais contas existem no seu serviço. O atacante nem precisa ler a mensagem: a diferença de tempo basta, porque o caminho "e-mail desconhecido" pula a etapa de hash. Em uma lista de dez milhões de endereços vindos de um vazamento anterior, ele extrai em poucas horas a lista exata dos seus usuários e passa a concentrar as tentativas neles.
Esse tipo de detalhe resume a autenticação: o mecanismo principal é simples de escrever, e são as periferias que abrem as brechas. Um cookie sem o atributo HttpOnly, uma verificação de papel aplicada ao corpo da requisição em vez de ao token, um logout que não invalida nada, uma comparação de segredo com ===. Esta lição trata rapidamente do caminho nominal para dedicar o essencial a essas periferias, porque é nelas que os incidentes acontecem.
Senhas
Uma senha não se criptografa, ela passa por hash — a operação precisa ser irreversível. E não com SHA-256: essas funções são projetadas para serem rápidas, que é exatamente o oposto do que se quer. Use uma função lenta e parametrizável, de preferência argon2id, ou bcrypt na falta dela.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão