O código é um segredo. E nós tratamos como um.
Um código de uso único é tão seguro quanto a forma como é gerado, armazenado e limitado. Bird Verify gera códigos com uma fonte criptográfica, armazena apenas um hash, compara em tempo constante e limita tanto envios quanto tentativas, de modo que um log vazado ou um ataque de força bruta não leva o invasor a lugar nenhum. Pontuação de fraude será construída sobre essa base em seguida.
import { 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 ••• ••• 4567Exemplo de código de verificação
Segurança ativa por padrão, não um complemento.
Toda verificação na Bird Verify API carrega as mesmas proteções: o código é gerado no servidor, nunca retornado, e armazenado apenas como hash; as verificações rodam em tempo constante e contra um orçamento limitado de tentativas; e os envios são limitados por destinatário e por espaço de trabalho. Você não precisa ativar ou configurar nada disso: é assim que a API funciona, seja como login com dois fatores ou acesso sem senha.
Cinco proteções em cada verificação.
Sem etapa de configuração, sem complemento avulso.
- 01
Geração criptográfica.
Os códigos são gerados a partir de uma fonte aleatória criptográfica, uniformemente distribuídos no espaço de códigos, não um contador ou timestamp previsível.
- 02
Hash em repouso, nunca exposto na resposta.
Apenas um HMAC-SHA256 de cada código é armazenado; o texto puro nunca é retornado pela API e nunca é gravado na sua stack ou nos nossos logs.
- 03
Comparação em tempo constante.
Os códigos enviados são comparados em tempo constante, de modo que um invasor não aprende nada pelo tempo que uma verificação leva.
- 04
Bloqueio por tentativas.
Cada sessão tem um número limitado de verificações (5 por padrão). Quando se esgotam, a sessão falha, então tentativas de adivinhação não podem continuar indefinidamente.
- 05
Limites de envio.
Um limite de envio por destinatário e um intervalo mínimo entre reenvios controlam o gasto e a superfície de abuso, cada um retornando um 429 com Retry-After.
As tentativas acabam antes dos seus usuários.
Um código errado retorna com as tentativas restantes, e a sessão falha quando o orçamento se esgota, de modo que um ataque de força bruta bate em um muro muito antes de encontrar o código.
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 fraude e proteção contra bombeamento de SMS.
O histórico por envio que o Verify registra hoje é a base para uma camada de fraude que estamos construindo agora. Ela usa as mesmas chamadas de criação e verificação, então adotá-la depois é uma mudança de configuração, não uma reintegração.
Sinais de risco na criação. Passe contexto de dispositivo, IP e solicitação em uma verificação, e tentativas de alto risco recebem um resultado bloqueado antes que qualquer código seja enviado, assim você não paga para enviar mensagem a um invasor.
Proteção contra bombeamento de SMS e AIT. Limites de envio por país e por prefixo, somados a um teto de gasto por espaço de trabalho, bloqueiam o ataque de tráfego artificialmente inflado que direciona OTPs para faixas de números premium para compartilhamento de receita com operadoras.
Construído sobre o que já existe. A decisão de risco lê o histórico de tentativas que o Verify mantém desde o primeiro dia, e o resultado bloqueado já faz parte do modelo de status, então a camada de fraude entra sem alterar sua integração.
O restante da plataforma Verify
Uma API, um conjunto de chaves. Explore as outras funcionalidades.
Escale sem
perder o controle.
Organize equipes em espaços de trabalho, controle o acesso à API e rastreie alterações nos logs de auditoria.
Registo de auditoria
Produção- Espaço de trabalho
- Produção
- Recurso
- Agente de envio
- Acesso de leituraLeitura e escrita