Antiabuso y seguridad de códigos
En vista previaEl código es un secreto. Lo tratamos como tal.
Un código de un solo uso es tan seguro como la forma en que se genera, almacena y limita. Bird Verify genera códigos con una fuente criptográfica, almacena solo un hash, compara en tiempo constante y limita tanto los envíos como los intentos de adivinación — así, un registro filtrado o un ataque de fuerza bruta no llevan a ningún lado. La puntuación de fraude se construirá sobre esta base a continuación.
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 } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: userInput,
}).safe();Seguridad activa por defecto, no un complemento.
Cada verificación en la API de Bird Verify incluye las mismas protecciones: el código se genera en el servidor, nunca se devuelve y se almacena solo como hash; las comprobaciones se ejecutan en tiempo constante y con un presupuesto de intentos limitado; y los envíos tienen un tope por destinatario y por workspace. No necesita activarlas ni configurarlas — así es como funciona la API, ya sea que la use para inicio de sesión con dos factores o acceso sin contraseña.
Cinco protecciones en cada verificación.
Sin pasos de configuración, sin complementos adicionales.
- 01
Generación criptográfica.
Los códigos se obtienen de una fuente aleatoria criptográfica, distribuidos uniformemente en el espacio de códigos, no de un contador o marca de tiempo predecible.
- 02
Hash en reposo, nunca en texto plano de salida.
Solo se almacena un HMAC-SHA256 de cada código; el texto plano nunca es devuelto por la API ni se escribe en su stack o en nuestros registros.
- 03
Comparación en tiempo constante.
Los códigos enviados se comparan en tiempo constante, por lo que un atacante no obtiene información del tiempo que tarda una verificación.
- 04
Bloqueo por intentos.
Cada sesión tiene un número limitado de comprobaciones (5 por defecto). Una vez agotadas, la sesión falla, por lo que los intentos de adivinación no pueden continuar indefinidamente.
- 05
Límites de envío y cuotas.
Un límite de envío por destinatario, un tiempo de espera para reenvíos y una cuota diaria por workspace acotan el gasto y la superficie de abuso, cada uno con un 429 con Retry-After.
Los intentos se agotan antes que la paciencia de sus usuarios.
Un código incorrecto devuelve un resultado con los intentos restantes, y la sesión falla cuando se agota el presupuesto, por lo que un bucle de fuerza bruta choca contra un muro en vez de encontrar una puerta abierta.
const { data } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: guess,
}).safe();
// wrong code, attempts left → { result: "invalid", attempts_remaining: 2 }
// budget spent, session done → { result: "failed", attempts_remaining: null }Próximamente: señales de fraude y protección contra SMS pumping.
El historial por envío que Verify registra hoy es la base para una capa de fraude que estamos construyendo ahora. Funciona con las mismas llamadas de creación y verificación — por lo que adoptarla después es un cambio de configuración, no una reintegración.
Señales de riesgo en la creación. Envíe contexto de dispositivo, IP y solicitud en una verificación, y los intentos de alto riesgo obtienen un resultado de bloqueo antes de que se envíe un código — así no paga por enviar mensajes a un atacante.
Protección contra SMS pumping y AIT. Límites de envío por país y por prefijo, más un techo de gasto por workspace, detienen el ataque de tráfico inflado artificialmente que dirige OTP a rangos de números premium para compartir ingresos con operadores.
Construido sobre lo que ya existe. La evaluación de riesgo lee el historial de intentos que Verify mantiene desde el primer día, y el resultado de bloqueo ya forma parte del modelo de estados — por lo que la capa de fraude se integra sin modificar su implementación.
Preguntas frecuentes sobre seguridad de verificación
¿Dónde se almacena el código de un solo uso?+
¿Cómo evitan que alguien adivine el código por fuerza bruta?+
¿Qué pasa con el SMS pumping y el tráfico inflado artificialmente?+
¿Estas protecciones tienen un costo adicional?+
¿De quién ven mis usuarios que proviene el código?+
El resto de la plataforma Verify
Una API, un conjunto de claves. Explora las demás funcionalidades.
Códigos generados, almacenados y con límites de frecuencia como debe ser.
La seguridad está integrada en Bird Verify, no se vende aparte: los canales, el código y los límites son los mismos dos endpoints.