> Faqs > Cómo bloquear al usuario si realiza demasiados intentos de login fallidos en una aplicación Laravel

Cómo bloquear al usuario si realiza demasiados intentos de login fallidos en una aplicación Laravel

Quisiera saber sus recomendaciones para hacer que una aplicación Laravel bloquee usuarios cuando realizan demasiados intentos de login fallidos.

Es decir, que por ejemplo al tercer intento fallido les bloquee para que no puedan seguir intentando realizar accesos. A fin de aumentar la seguridad de las aplicaciones.

Respuestas

Tengo la respuesta. Esta es una funcionalidad que está integrada de casa en el framework Laravel, de hecho el sistema ya lo hace, solo que el bloqueo se realiza con un número mayor de accesos de lo que sería deseable para mi.

Existen dos propiedades de la clase LoginController que mantienen el número de intentos que se pueden realizar antes de bloquear a un usuario y el tiempo que ha de pasar hasta que se elimina el desbloqueo. Estas propiedades están declaradas en el trait ThrottlesLogins, que a su vez es incluido por el trait AuthenticatesUsers, ambos del framework Laravel y usados en el mencionado LoginController.

En resumen, simplemente tenemos que definir estas propiedades en el archivo del LoginController.php, en Http > Controllers > Auth.

// Evitar login fallados repetidas veces
protected $maxAttempts = 3; // De manera predeterminada sería 5
protected $decayMinutes = 60; // De manera predeterminada sería 1

Los valores que tiene como predeterminados ya deben conseguir evitar los ataques de fuerza bruta para el intento de login sobre usuarios, pero creo que se puede ser un poco más restrictivo sin que afecte negativamente a la experiencia de usuario de las personas "reales".

Espero que pueda ser de ayuda para otros desarrolladores Laravel, ya que son valores muy interesantes de cara a aumentar un poco más la seguridad de las aplicaciones.

Julian
1147 49 87 46