0.2.0 (2026-04-16)¶
Release enfocado en seguridad: autenticación multi-factor, política de contraseña reforzada, hardening de la plataforma y gestión administrativa de usuarios.
✨ Features¶
- Autenticación Multi-Factor (MFA) con soporte para dos métodos simultáneos: email (vía Resend) y aplicación TOTP (Google Authenticator, Authy).
- Método MFA predeterminado configurable cuando ambos métodos están activos.
- Opción "Probar otro método" durante la verificación de login para cambiar entre métodos MFA disponibles.
- Códigos de recuperación de un solo uso (8 códigos en formato XXXXX-XXXXX) como respaldo cuando el método MFA principal no está disponible.
- Gestión completa de MFA desde la sección de Seguridad del perfil: activar, desactivar, cambiar método predeterminado, regenerar códigos de recuperación.
- Banner no intrusivo para usuarios sin MFA activo, recomendando su activación tras iniciar sesión.
- Duración de sesión diferenciada: 2 días sin MFA, 5 días con MFA habilitado.
- Política de contraseña reforzada: mínimo 12 caracteres, al menos una mayúscula, minúscula, dígito y carácter especial. No puede ser igual al email.
- Indicador visual de fortaleza de contraseña en tiempo real en formularios de registro, cambio y restablecimiento de contraseña.
- Panel de administración de usuarios con lista paginada, búsqueda, estado MFA, plan de suscripción y fecha de registro.
- Opción para que el admin desactive el MFA de cualquier usuario (recuperación de cuentas bloqueadas).
- Exportación de usuarios a Excel (.xlsx) con datos de MFA, plan y fecha de registro.
- Emails MFA con soporte multiidioma (español/inglés) según el idioma seleccionado por el usuario.
🔧 Internal¶
- Security headers middleware: X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy, Cache-Control, Strict-Transport-Security (producción).
- Rate limiting en login: máximo 10 intentos por IP por minuto.
- Account lockout: bloqueo temporal de 15 minutos tras 5 intentos fallidos consecutivos.
- Nuevo módulo backend
mfa/siguiendo patrón SOLID (interfaces, repositorio, servicios, schemas, rutas). - Dependencias agregadas:
pyotp,qrcode[pil],openpyxl.
⬆️ Upgrades¶
- Política de contraseña actualizada de 8 a 12 caracteres mínimos con requisito de carácter especial.