v1.7.0
Security
- Account lockout — bloqueo automático de cuenta tras 5 intentos de login fallidos consecutivos (configurable):
- Nueva tabla
login_attemptsconidentifiercomoPRIMARY KEY— sin enumeración de usuarios: solo se registran intentos para usernames que existen en DB - Operación atómica via
INSERT ... ON DUPLICATE KEY UPDATEen SQL — sin race conditions - Lógica de bloqueo integrada en
App\Core\Auth— lockout se limpia en login exitoso y en reset de contraseña - Check de bloqueo antes de
verifyCredentials(): contraseña correcta no levanta el bloqueo durante la ventana - Mensaje con minutos restantes mostrado al usuario bloqueado
- Controlado por
LOGIN_LOCKOUT_ENABLED,LOGIN_MAX_ATTEMPTS(default 5),LOGIN_LOCKOUT_MINUTES(default 15)
- Nueva tabla
Tests
- 7 nuevos tests en
tests/Unit/LoginAttemptTest.php— operaciones atómicas, normalización, expiración de bloqueo - 4 nuevos casos en
tests/Integration/AuthTest.php— lockout en Auth, limpieza en reset de contraseña - Total: 40 tests
Full Changelog
https://github.com/Jandres25/Encriptacion_PHP/blob/master/CHANGELOG.md