A.7 — Autenticação e sessões (onde nascem os bugs de acesso)

Como um login funciona, no código:

  1. Usuário envia e-mail + senha.
  2. Servidor busca o usuário, calcula o hash da senha enviada e compara com o hash guardado (nunca compara a senha em texto).
  3. Se bate, cria uma sessão: devolve um cookie ou um JWT que prova, nas próximas requisições, que você está logado.

🔒 Os erros clássicos (que você vai reconhecer no código):

  • Hash rápido (SHA-256/MD5) em vez de bcrypt/argon2 → senha quebrável (Ex. 28).
  • Comparação de hash não em tempo constante → timing side-channel (Ex. 28).
  • JWT sem validar exp/role, ou com segredo fraco/hardcoded (Ex. 4/12).
  • Cookie sem HttpOnly/Secure/SameSite (Ex. 10).
  • Decisão de "é admin?" no client, não no servidor (Ex. 7).

entre para marcar esta aula como concluída.

PurpleLab // plataforma de treino ofensivo + defensivo // Fase 1 — portal dinamico