Woku detecta y bloquea ataques de fuerza bruta sobre el login para proteger las cuentas de los usuarios.Documentation Index
Fetch the complete documentation index at: https://woku.app/docs/llms.txt
Use this file to discover all available pages before exploring further.
Cómo funciona
- Cada intento de login (exitoso o fallido) queda registrado en una
tabla
LoginAttemptcon el identificador usado (lowercased), la IP de origen y el resultado. - Si una cuenta acumula 5 intentos fallidos en los últimos 15
minutos, el sistema:
- Pone el campo
lockedUntildel usuario a 15 minutos en el futuro. - Registra una entrada
auth.lockouten el registro de auditoría confailedAttempts,lockedUntily la IP del último intento. - Envía un email al usuario notificando el bloqueo (ver abajo).
- Pone el campo
- Durante el bloqueo, cualquier intento de login (incluso con la
contraseña correcta) responde
403 Forbidden. - Pasado el window de 15 minutos, el bloqueo se levanta automáticamente al siguiente intento, no hace falta acción manual.
Email de notificación
Cuando se dispara el bloqueo, el sistema envía al usuario un correo vía AWS SES con:- Asunto: “Bloqueo temporal de tu cuenta en woku”.
- Cuerpo: explica que detectamos varios intentos fallidos, cuándo se levanta el bloqueo, desde qué IP, y un CTA para resetear la contraseña.
Desbloqueo administrativo
Si el usuario necesita acceder antes de que pase el window, un administrador interno puede desbloquearlo desde el backoffice. La acción queda registrada comoauth.unlock en el registro de
auditoría con la IP del request.
Limitaciones
- La detección es per-usuario, no per-IP. Un atacante distribuido
desde múltiples IPs probando muchos usuarios distintos no dispara
el bloqueo por usuario, pero queda igualmente expuesto al rate
limit global (10 req/s, 50 req/10s, 100 req/min por IP, gestionado
por
@nestjs/throttler). - Si el atacante usa un identificador que no corresponde a ningún usuario, no hay bloqueo (no hay nada que bloquear), pero el rate limit por IP igual aplica.