0%
Autenticação

Autenticação

Provar quem é o usuário e, depois, decidir o que ele tem direito de fazer.

10-15 min

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

Link copiado!