El factor que todos tus usuarios ya tienen
A diferencia de apps autenticadoras, llaves físicas o correos transaccionales, el SMS funciona en cualquier teléfono — incluido el de quien acaba de descargar tu app por primera vez. Es el camino más corto entre tu producto y la confianza del usuario.
FOXSYS te da la infraestructura completa: generación segura del código, envío por operador, validación con vencimiento, límite de intentos y auditoría, sin que tengas que escribir una sola línea de criptografía.
Características incluidas
Códigos generados con CSPRNG
Cada OTP se genera con un generador criptográficamente seguro. No reutilizamos, no son predecibles.
Vencimiento de 5 minutos
Los códigos expiran automáticamente. Después de tres intentos fallidos, el intento queda cerrado.
Rate limiting por subcuenta
5 req/seg, 60 req/min, 600 req/hora. Te protege ante credenciales filtradas y de fuerza bruta del código.
Aislamiento multi-tenant
Cada organización vive en su propio contexto, con políticas a nivel de base de datos que evitan fugas cruzadas.
Auditoría de cada intento
Todos los eventos quedan registrados con marcas de tiempo: generación, entrega, validación, vencimiento.
Reportes de entrega
Tasa de entrega y latencia por operador, con detalle al nivel de mensaje.
Privacidad y regulación
- Cifrado en tránsito (TLS 1.2+) en todas las APIs y panel.
- Tokens y credenciales cifrados en reposo.
- Política de retención acotada: los OTP y los intentos de verificación se purgan al expirar.
- Tratamiento de datos de Destinatarios conforme a la LFPDPPP.
- Encabezados de seguridad HTTP en todo el sitio (HSTS, X-Frame-Options, etc.).
Recomendaciones para tu integración
- No reenvíes el OTP por correo: anula el propósito del segundo factor.
- Limita los reenvíos del lado de tu UI (por ejemplo, "Reenviar en 30 s"): mejora la experiencia y reduce gasto.
- Bloquea pegado automatizado en el campo de OTP, pero permite el autocompletado del SMS — los teléfonos modernos lo manejan bien.
- Atiende el estado
MAX_ATTEMPTS: pide al usuario generar un nuevo código en vez de seguir intentando. - Persiste el
verifyAttemptIdligado a la sesión del usuario, no en cookies del cliente.