Blog · Verificação de telefone
O que é OTP e como funciona a verificação de telefone
Se você já recebeu um SMS com a mensagem “seu código é 482913” ao criar uma conta, já usou um OTP. Neste artigo explicamos o que é essa senha de uso único, por que ela é usada para confirmar números de telefone e quais cuidados fazem diferença quando você implementa o fluxo no seu produto.
O que significa OTP
OTP é a sigla em inglês de One-Time Password, em português “senha de uso único”. É um código curto, geralmente de 4 a 8 dígitos, gerado de forma aleatória para uma única conferência. Ele tem duas características que o diferenciam de uma senha comum:
- Vale uma vez só: depois de conferido com sucesso, não pode ser reaproveitado.
- Expira rápido: se ninguém digitar o código dentro do prazo, ele deixa de valer.
Existem OTPs gerados por aplicativos autenticadores, por chaves físicas e por e-mail. Aqui o foco é o OTP entregue ao telefone, por SMS ou por ligação de voz, que é o mais usado para confirmar que um número informado em um cadastro realmente pertence a quem o digitou.
Por que verificar o telefone de quem se cadastra
Pedir o telefone sem verificar é aceitar qualquer sequência de dígitos. Na prática, isso gera três problemas:
- Erros de digitação: um dígito trocado e a empresa passa a mandar avisos, cobranças ou códigos de acesso para outra pessoa.
- Contas falsas em volume: sem uma barreira, um robô cria centenas de contas para abusar de cupons, períodos de teste ou programas de indicação.
- Recuperação de conta frágil: se o telefone cadastrado nunca foi confirmado, ele não serve como canal confiável para recuperar acesso.
A verificação por OTP resolve o essencial: comprova que, naquele momento, a pessoa tem acesso ao número. Não é uma prova de identidade, e é importante não vendê-la como tal, mas é uma camada barata e eficaz contra boa parte dos problemas acima.
Como funciona o fluxo, passo a passo
Um fluxo de verificação de telefone bem desenhado costuma ter quatro etapas.
1. Validar o número antes de enviar
Antes de gastar um envio, vale checar se o número é estruturalmente possível. No Brasil isso significa conferir se o DDD existe, se um celular tem o nono dígito, se um fixo tem o formato de fixo e se o número não é um serviço especial como 0800, 3003, 4004 ou 190, que não recebem código. No ProValidPhone essa etapa é o endpoint /v1/validate, que devolve o número normalizado em E.164 e o tipo de linha.
2. Gerar e enviar o código
O servidor gera um código aleatório, registra uma sessão de verificação com prazo de validade e entrega o código ao telefone. Os canais mais comuns são o SMS e a ligação de voz, em que uma voz sintetizada fala os dígitos. Em uma API, isso costuma ser uma chamada como /v1/verify/sms ou /v1/verify/call, que devolve um identificador da sessão.
3. Conferir o código digitado
A pessoa digita o que recebeu e o seu back-end envia o código e o identificador da sessão para conferência, por exemplo em /v1/verify/check. O servidor compara, conta a tentativa e responde se o código confere, se está errado, se expirou ou se as tentativas acabaram.
4. Registrar o resultado
Com o código conferido, o seu sistema marca o telefone como verificado. Se preferir não depender da resposta síncrona, um webhook de resultado avisa o seu servidor quando a verificação é concluída, falha ou expira.
Boas práticas de segurança em OTP
O conceito é simples, mas os detalhes definem se o fluxo é seguro. Os pontos que mais importam:
- Validade curta: poucos minutos bastam para ler e digitar o código.
- Tentativas limitadas: um código de 6 dígitos tem um milhão de combinações; sem limite de tentativas, ele pode ser adivinhado por força bruta.
- Nada de código em texto claro: guarde apenas um hash e compare hashes. Assim, um vazamento do banco não expõe códigos válidos.
- Limite de envios por número e por IP: impede que alguém use o seu formulário para disparar mensagens em massa, prática conhecida como SMS pumping.
- Idempotência: se o usuário clicar duas vezes em “enviar código” ou a rede repetir a requisição, a mesma chave de idempotência evita um segundo envio cobrado.
- Mensagens de erro claras, mas discretas: diga que o código está incorreto ou expirou, sem revelar detalhes internos.
Como o ProValidPhone implementa a verificação
O ProValidPhone é uma API REST brasileira que aplica essas práticas por padrão. O código tem 6 dígitos, vale 5 minutos e aceita até 5 tentativas de conferência. A plataforma guarda apenas o hash SHA-256 do código. Há limite de 3 envios por hora por número em cada canal, limites de requisições por conta e suporte ao header Idempotency-Key. As API keys podem ter escopos separados (validação, SMS e voz), e os webhooks de resultado são assinados com HMAC-SHA256 e reenviados em caso de falha. A documentação é toda em português.
Para a entrega, o envio usa infraestrutura de operadoras brasileiras, com gateway de chips locais para SMS e central telefônica própria para as ligações, em que uma voz neural (Google) fala o código. A ligação funciona para celular e também para telefone fixo. Se você está em dúvida entre os canais, veja o artigo SMS ou ligação: qual canal usar.
Perguntas frequentes sobre OTP
O que significa OTP?
OTP é a sigla de One-Time Password, ou senha de uso único. É um código, normalmente numérico e curto, que vale para uma única conferência e por um tempo limitado.
Verificar o telefone por OTP prova a identidade da pessoa?
Não. A verificação por OTP comprova que quem está no cadastro tem acesso àquele número naquele momento. Ela reduz contas falsas e erros de digitação, mas não substitui uma verificação de identidade quando o seu negócio exige isso.
Por quanto tempo um código OTP deve valer?
O suficiente para a pessoa ler e digitar o código, e não muito mais. Poucos minutos é o padrão de mercado. No ProValidPhone o código tem 6 dígitos e vale 5 minutos, com até 5 tentativas de conferência.
O código precisa ficar guardado no banco de dados?
Não em texto claro. Basta guardar um hash do código e comparar o hash do que o usuário digitou. O ProValidPhone guarda apenas o hash SHA-256 do código.
Vale a pena validar o número antes de enviar o código?
Sim. Uma validação estrutural (DDD, nono dígito do celular, formato de fixo) barra números impossíveis antes de gastar um envio e melhora a mensagem de erro para quem digitou errado.
Comece a verificar telefones
Veja os endpoints e exemplos em curl, Python, Node e PHP na documentação, ou confira os planos disponíveis.