aut2fa/ blog

O que é OTP (código de verificação) e como funciona na prática

Entenda o que é OTP, a senha de uso único usada em cadastros, logins e confirmações, como ela funciona por trás da tela e o que você precisa para colocar na sua aplicação.

Ilustração de um celular recebendo um código de verificação OTP de 6 dígitos

Você já digitou um código de 6 dígitos que chegou no celular para entrar num app, confirmar uma compra ou criar uma conta. Esse código tem nome: OTP, sigla em inglês para One-Time Password, ou senha de uso único.

Neste guia você vai entender o que é OTP, por que ele virou padrão em praticamente todo produto digital e o que é preciso para implementar um fluxo de código de verificação na sua aplicação.

O que é OTP

OTP é uma senha temporária que vale para uma única operação e por um tempo curto. Depois de usada (ou depois que o prazo expira), ela não serve para mais nada.

É justamente isso que a torna útil para segurança: mesmo que alguém descubra o código depois, ele já não vale.

Na prática, o OTP aparece em situações como:

  • Cadastro: confirmar que o telefone ou e-mail informado pertence mesmo à pessoa.
  • Login: segundo fator de autenticação (2FA) depois da senha, ou login sem senha.
  • Transações sensíveis: trocar e-mail, alterar dados bancários, aprovar um pagamento.
  • Recuperação de conta: provar que é o dono do número antes de redefinir a senha.

Como um código de verificação funciona por trás da tela

O fluxo de OTP tem sempre três passos:

  1. Gerar e enviar – o servidor gera um código aleatório (normalmente 6 dígitos), guarda uma referência a ele e envia para o telefone ou e-mail da pessoa.
  2. Entregar – o código chega por algum canal: WhatsApp, SMS, Telegram ou e-mail.
  3. Verificar – a pessoa digita o código no app, e o servidor confere se ele bate, se ainda está no prazo e se o número de tentativas não estourou.

Parece simples, mas cada passo tem detalhes que fazem diferença em segurança e custo:

  • O código precisa ser aleatório de verdade (nada de Math.random() para isso).
  • Ele deve expirar em poucos minutos.
  • Deve existir um limite de tentativas para evitar força bruta.
  • O envio precisa de limites por minuto e por destinatário, senão alguém pode usar seu formulário para disparar milhares de mensagens (o famoso SMS pumping).
  • O código não deve ficar salvo em texto puro no banco.

OTP x TOTP: qual a diferença?

Você pode ver também o termo TOTP (Time-based One-Time Password). É o código que aparece em apps autenticadores e muda a cada 30 segundos. Ele é gerado no próprio aparelho, a partir de uma chave combinada antes.

Já o OTP enviado por mensagem é gerado no servidor e entregue à pessoa. A vantagem é que não exige que ela instale nada: basta ter WhatsApp, SMS ou e-mail. Para cadastro e verificação de telefone, o OTP por mensagem é o caminho natural, porque o objetivo é justamente provar que a pessoa tem acesso àquele número.

Quanto tempo um OTP deve valer?

Não existe um número mágico, mas a faixa comum é de 5 a 10 minutos. Menos que isso frustra quem demora a abrir a mensagem; mais que isso aumenta a janela de ataque.

Na aut2fa, por exemplo, o código expira 10 minutos depois da criação do envio, e depois de 5 tentativas erradas o envio é bloqueado.

Por que não construir tudo do zero?

Dá para construir, mas você vai precisar:

  • Contratar e manter números ou provedores para cada canal.
  • Tratar falhas de entrega e tentar de novo por outro número.
  • Guardar status de cada mensagem (enviada, entregue, lida).
  • Criar limites contra abuso e fraude.
  • Controlar custo por mensagem.

É por isso que a maior parte dos times usa uma API de OTP. Com a aut2fa, o fluxo inteiro vira duas chamadas no seu backend:

# 1. Envia o código
curl https://api.aut2fa.com/v1/send \
  -H "Authorization: Bearer ak_live_…" \
  -H "Content-Type: application/json" \
  -d '{"to": "+5531999999999", "locale": "pt-BR"}'

# 2. Verifica o que a pessoa digitou
curl https://api.aut2fa.com/v1/send/snd_8Kq2wR7tXz/verify \
  -H "Authorization: Bearer ak_live_…" \
  -H "Content-Type: application/json" \
  -d '{"code": "482913"}'

A resposta da verificação diz se o código é válido (valid: true) e quantas tentativas restam (attempts_left). A aut2fa gera o código, escolhe o canal e o número que envia, e registra cada etapa com horário.

Resumo

  • OTP é uma senha de uso único, temporária, usada para confirmar identidade.
  • O fluxo é sempre enviar → entregar → verificar.
  • Segurança depende de expiração, limite de tentativas e limite de envios.
  • Uma API de OTP resolve entrega, status e proteção contra abuso sem você manter infraestrutura.

Quer testar agora? Crie sua conta grátis e use uma chave ak_test_: no modo de teste o código é sempre 000000 e nenhum envio é cobrado.

Continue lendo