feat(auth): registrar intentos fallidos de inicio de sesión #128
app/auth/login.py
+3 −0
| @@ -41,6 +41,9 @@ def autenticar(dni: str, clave: str) -> Sesion: | |||
| 41 | 41 | usuario = repo.buscar_por_dni(dni) | |
| 42 | 42 | if not usuario or not verificar(clave, usuario.hash): | |
| 43 | + | logger.warning( | |
| 44 | + | f"Inicio de sesión fallido para DNI {dni} a las {ahora()}" | |
| 45 | + | ) |
DNI completo en el log, en texto plano. Esta línea registra el documento de quien se equivocó de contraseña. Los logs suelen ir a herramientas de observabilidad, se guardan más tiempo que la base de datos y los lee más gente. El DNI identifica directamente a la persona: es un dato personal.
Sugerencia: enmascararlo antes de registrarlo. Para correlacionar intentos, usa los últimos dígitos o un hash con sal guardado fuera del log.
- f"Inicio de sesión fallido para DNI {dni} a las {ahora()}"+ f"Inicio de sesión fallido para DNI {enmascarar_dni(dni)} a las {ahora()}"
enmascarar_dni("30.123.456") devuelve "**.***.456". La función ya existe en app/util/privacidad.py.
| 43 | 46 | raise CredencialesInvalidas() | |
| 44 | 47 | return sesiones.crear(usuario) |