Impeça a adivinhação por força bruta e o abuso automatizado de OTP.
Proteja fluxos de verificação de cadastro, login e autenticação reforçada contra adivinhação de códigos por força bruta, loops automatizados de reenvio e bombeamento de SMS, sem criar atrito para usuários legítimos. O Bird Verify armazena códigos de verificação com hash, aplica limites de tentativas e prazos de expiração por sessão, limita envios repetidos por destinatário e permite bloquear países que você não atende antes do envio de qualquer mensagem.
verify.ts
200 · pendingimport { BirdClient } from "@messagebird/sdk"; const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY!, }); // Send the code, then check it by recipient. await bird.verify.verifications.create({ to: { phone_number: "+15551234567" }, }).safe(); const { data, error } = await bird.verify.verifications.check({ to: { phone_number: "+15551234567" }, code: userInput, }).safe(); if (error) throw error;
Sua conta
Confirme que é você.
Digite o código enviado para
+1 ••• ••• 4567
verify.ts
200 · pendingimport { BirdClient } from "@messagebird/sdk"; const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY!, }); // Send the code, then check it by recipient. await bird.verify.verifications.create({ to: { phone_number: "+15551234567" }, }).safe(); const { data, error } = await bird.verify.verifications.check({ to: { phone_number: "+15551234567" }, code: userInput, }).safe(); if (error) throw error;
Sua conta
Confirme que é você.
Digite o código enviado para
+1 ••• ••• 4567
verify.ts
200 · pendingimport { BirdClient } from "@messagebird/sdk"; const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY!, }); // Send the code, then check it by recipient. await bird.verify.verifications.create({ to: { phone_number: "+15551234567" }, }).safe(); const { data, error } = await bird.verify.verifications.check({ to: { phone_number: "+15551234567" }, code: userInput, }).safe(); if (error) throw error;
Sua conta
Confirme que é você.
Digite o código enviado para
+1 ••• ••• 4567
Proteja fluxos de OTP sem criar limitadores de requisições próprios.
Proteger a verificação internamente significa manter contadores no Redis para intervalos de reenvio, rastrear tentativas incorretas por sessão, aplicar hash aos códigos antes de gravá-los no banco de dados e filtrar o tráfego para países onde você não opera. Com a API do Bird Verify, essas proteções são aplicadas automaticamente em cada sessão de verificação. Códigos de verificação em texto simples não aparecem nas respostas da API nem nos logs da aplicação, os endpoints de checagem aplicam limites de tentativas e limitação de requisições por minuto, e as configurações do espaço de trabalho permitem ajustar prazos de expiração e destinos permitidos em login com dois fatores e acesso sem senha.
Como o Bird protege sessões de verificação contra abuso.
Proteções padrão e controles do espaço de trabalho que impedem a adivinhação de códigos, enxurradas de reenvios e tráfego internacional indesejado.
- 01
Gere códigos de verificação imprevisíveis.
Gere por padrão códigos de verificação numéricos de 6 dígitos (ou de 4 a 8 dígitos por solicitação) a partir de uma fonte aleatória criptográfica em todo o espaço de códigos, para que invasores não consigam prever códigos com base em horários ou contadores sequenciais.
- 02
Mantenha códigos em texto simples fora de logs e respostas.
Armazene códigos de verificação como hashes HMAC-SHA256 e omita o texto simples das respostas da API, dos payloads de webhook e dos logs do painel, para que logs vazados da aplicação ou telas de suporte não exponham códigos ativos.
- 03
Verifique os códigos enviados em tempo constante.
Avalie os dígitos enviados pelo usuário em tempo constante em todas as tentativas ativas da sessão, para que a latência da resposta não dê aos invasores nenhuma pista sobre quantos dígitos coincidiram.
- 04
Bloqueie a adivinhação por força bruta e expire sessões antigas.
Por padrão, cada sessão tem limite de 5 tentativas de checagem e prazo de expiração de 10 minutos, e você pode ajustar ambos nas configurações do espaço de trabalho. Quando as tentativas ou o tempo se esgotam, a sessão é encerrada e novas checagens são rejeitadas, com limitação de checagens por minuto como reforço.
- 05
Limite envios repetidos e bloqueie países não utilizados.
Aplique um intervalo de reenvio de 60 segundos (configurável até uma hora) e um limite contínuo de 5 envios por endereço de destinatário por hora, para que bots não inundem o telefone do usuário nem esgotem seu saldo. Desative no painel os países que você não atende para bloquear o bombeamento de SMS para esses destinos antes do envio de qualquer mensagem.
Oriente usuários reais em erros de digitação e bloqueie loops de força bruta.
Quando o usuário digita um dígito errado, a resposta da checagem informa ao seu app quantas tentativas restam, para que você peça que ele tente novamente. Quando as tentativas da sessão se esgotam, a verificação é encerrada automaticamente e bloqueia novos palpites até que uma nova sessão seja iniciada.
const { data, error } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: guess,
}).safe();
if (error) throw error;
// wrong code, attempts left → { success: false, reason: "incorrect_code", attempts_remaining: 2 }
// budget spent, session done → { success: false, reason: "attempts_exhausted", attempts_remaining: null }Em breve: sinais de risco automatizados e tetos de gastos.
Além dos controles por país e dos limites de envio por destinatário já disponíveis, estamos criando uma camada antifraude diretamente no ciclo de vida da verificação. Como ela funciona nos mesmos endpoints de envio e checagem, sua equipe poderá ativar regras de risco na configuração sem alterar o código da aplicação.
Sinais de risco nas solicitações de verificação. Envie o contexto do dispositivo, do IP e da solicitação ao iniciar uma verificação, para que tentativas de alto risco sejam bloqueadas antes do envio da mensagem e da cobrança pela operadora.
Limites de velocidade por prefixo e tetos de gastos. Combine limites de envio por país e por prefixo com limites de verificação do espaço de trabalho para bloquear ataques de tráfego artificialmente inflado (AIT) contra faixas premium de operadoras antes que esgotem seu orçamento.
Decisões baseadas no histórico de entregas. Pontue novas solicitações de verificação com base no histórico de tentativas e conversões que o Bird Verify registra em todos os canais e exiba os resultados bloqueados diretamente no seu handler de status atual.
Crie na plataforma Verify
Entrega multicanal, roteamento de fallback e fluxos de autenticação criados na mesma API.
Escale sem perder o controle.
Separate production and sandbox traffic into dedicated workspaces, scope API keys to the exact channels each service or agent needs, and track permission changes in the audit log.