Por que cadastro sem verificação de e-mail é um risco que a maioria ignora
Abrir sessão no cadastro sem confirmar o e-mail é comum, rápido de implementar e quase sempre tratado como problema de outro dia. Fechamos esse gap na Reveno Agents e documentamos o porquê.
Quando reintroduzimos conta de usuário na plataforma gratuita, o cadastro funcionava assim: e-mail, senha, sessão aberta na hora. Simples, rápido, e com um problema conhecido desde o primeiro code review: ninguém confirmava que o e-mail informado pertencia mesmo a quem estava cadastrando.
Por que isso importa mesmo sem dado sensível
A tentação de adiar esse tipo de correção é real: sem checkout, sem dado de pagamento, sem informação sensível na conta, o risco parece baixo. Mas uma conta sem verificação de e-mail já é superfície para abuso simples (alguém cadastra o e-mail de outra pessoa, por engano ou de propósito) e para spam de notificação. Quanto mais a base de contas cresce, mais caro fica corrigir depois.
O que reaproveitamos em vez de inventar
Em vez de desenhar um mecanismo novo, reaproveitamos um padrão já testado em produção no modelo comercial anterior da plataforma: código de 4 dígitos, hash com pepper (nunca o código em texto puro no banco), expiração de 15 minutos, limite de tentativas antes de bloquear. O mesmo mecanismo que já tinha sustentado login e redefinição de senha sem incidente.
- A sessão abre no cadastro. O uso não fica bloqueado enquanto o e-mail é confirmado.
- Banner de verificação aparece na conta até o código ser confirmado, depois some sozinho.
- Reenvio de código tem limite próprio, para não virar canal de flood contra a caixa de entrada de outra pessoa.
- O código nunca aparece em uma resposta da API. Ele só chega pelo e-mail.
Validado com dado real, não só em teoria
Testamos o fluxo inteiro em produção com uma conta descartável: cadastro, código incorreto (mensagem certa, tentativas restantes contadas), código correto (conta marcada como verificada), e a conta de teste removida depois. Sem isso, qualquer afirmação de que "funciona" seria só suposição.