Evitar el abuso de la API de OTP
Si los scripts golpean en bucle el envío de OTP, los usuarios reciben códigos no solicitados en masa, el saldo se consume rápido y la reputación del canal puede bajar. EngageLab OTP puede limitar la frecuencia y el volumen en el envío, pero no puede detener un endpoint no autenticado «Obtener código de verificación» en su aplicación.
Este artículo explica cómo combinar las capacidades de la plataforma con las protecciones del negocio para reducir el abuso de la API.
Arquitectura correcta
La API de EngageLab OTP solo debe llamarse desde su servidor. No la llame directamente desde el navegador, una app cliente o un miniprograma.
Usuario → Su frontend (inicio de sesión / registro / restablecer contraseña)
→ Su backend (comprobación de sesión, CAPTCHA, límites de negocio)
→ API de EngageLab OTP (con API Key y end_user_ip)
- Guarde
dev_keyydev_secretsolo en el servidor. No los ponga en el código frontend, paquetes de la app ni repositorios públicos. - El frontend solo debe llamar a su propia API «Obtener código de verificación». No se conecte directamente a
https://otp.api.engagelab.cc. - En producción, configure una lista blanca de IP de quien llama. Consulte API Key.
No mezcle los dos tipos de IP
| Ajuste / parámetro | Qué indicar | Qué bloquea |
|---|---|---|
| Lista blanca de IP de API Key | La IP de salida de su servidor | IP desconocidas que llaman a la API OTP con una Key |
end_user_ip en la solicitud de envío |
La IP del usuario final | La misma IP de usuario que pide códigos repetidamente en poco tiempo |
Tras activar el límite «por dirección IP» en el Centro de seguridad, debe enviar end_user_ip en la solicitud de Envío de OTP para que el límite se aplique. Envíe la IP pública del dispositivo del usuario, no la de su servidor.
Protecciones en la plataforma
Complete esta configuración en la consola OTP para limitar el daño si se abusa del envío:
| Qué hacer | Dónde | Finalidad |
|---|---|---|
| Definir lista blanca de IP y vigencia de la API Key, y poder deshabilitarla en cualquier momento | API Key | Restringir quién puede llamar a la API; deshabilitarla de inmediato si se filtra |
| Activar límites de frecuencia para el mismo número y la misma IP | Centro de seguridad | Bloquear envíos repetidos a un número o desde una IP |
Enviar end_user_ip en la solicitud |
Envío de OTP | Hacer efectivo el límite por IP |
| Definir valores de alerta y de cuota diarios / mensuales | Centro de seguridad | Alertar o pausar automáticamente si el volumen es anómalo |
| Definir lista blanca o negra por país / región | Centro de seguridad | Evitar envíos fuera de las regiones de negocio |
| Pausar el canal SMS con un clic en una emergencia | Centro de seguridad | Detener pérdidas con rapidez mientras ocurre el abuso |
Para recibir notificaciones cuando se alcance una alerta o una cuota, configure primero el evento de callback en Webhook.
Protecciones en el negocio
Los límites de la plataforma no sustituyen la protección de su propia API «Obtener código de verificación». Complete estas comprobaciones antes de llamar a EngageLab:
- Ejecute una verificación humana (CAPTCHA de imagen, Turnstile o reCAPTCHA) antes de enviar el código y valide el resultado en el servidor.
- Defina un intervalo de reenvío para el mismo número (por ejemplo 60 segundos) y muestre una cuenta atrás en el frontend.
- Limite las solicitudes por cuenta, dispositivo e IP por minuto, hora y día natural. Cuente también las solicitudes fallidas.
- «Obtener código de verificación» debe incluir una sesión iniciada o, si no hay inicio de sesión, una sesión válida. No exponga un endpoint de envío público sin contexto.
- Limite los intentos del mismo código e invalídelo en cuanto la verificación sea correcta. EngageLab OTP no permite volver a verificar un código ya verificado.
Tratar los códigos de error como señales de abuso
Envío de OTP puede devolver estos errores en la validación previa al envío. Cuando ocurran, ralentice los reintentos y compruebe si hay tráfico concentrado:
| Código de error | Código HTTP | Significado |
|---|---|---|
3004 |
400 | Se superó el límite de frecuencia para la misma plantilla y el mismo destinatario; la ventana sigue la configuración de la plantilla |
6001 |
429 | Se superó la frecuencia de envío del mismo número; la ventana puede ser minuto, hora o día natural |
6002 |
429 | Se superó la frecuencia de envío de la misma IP de usuario final; solo se comprueba si se envía end_user_ip |
6003 |
429 | El volumen diario o mensual global de la aplicación alcanzó el tope |
6007 |
403 | El envío de códigos SMS está en pausa, para todos los países / regiones o para el actual |
No reintente de inmediato en bucle al recibir HTTP 429. Si continúa, compruebe primero en el Centro de seguridad si hay una cuota de volumen o una parada de emergencia y luego contacte con el soporte.
Qué hacer si se filtra un secreto
- En la consola OTP, deshabilite o rote la API Key.
- En el Centro de seguridad, use la parada de emergencia para pausar el envío SMS.
- Revise envíos anómalos en Historial y en los callbacks.
- Restrinja la lista blanca de IP de la API Key y compruebe si las cuotas diarias / mensuales son razonables.
- Reanude el envío solo cuando el riesgo haya desaparecido.
Lista de comprobación antes de producción
- La API solo se llama desde el servidor.
dev_secretno está en el frontend, la app ni un repositorio público. - La API Key de producción tiene lista blanca de IP de salida del servidor.
- Los límites de frecuencia por número están activos en el Centro de seguridad; las solicitudes de envío incluyen
end_user_ipsi necesita límites por IP. - Hay cuotas diarias / mensuales y callbacks relacionados con el volumen.
- La API «Obtener código de verificación» ejecuta CAPTCHA y límites de negocio antes de llamar a EngageLab.
- El orden de respuesta ante abuso está claro: deshabilitar la Key → parada de emergencia → revisar los registros de envío.










