Consejo de seguridad: Límites de velocidad múltiples en Laravel
- Publicado el 07 agosto, 2024
- Palabras: 270
¡Para esos momentos en los que un solo límite de velocidad no es suficiente!
Siempre trato de evitar usar la dirección IP en tu limitador de velocidad, ya que se cambia muy fácilmente a través de botnets, VPN y la suplantación de identidad tradicional. En su lugar, te recomiendo que uses algo más, como un nombre de usuario o una dirección de correo electrónico. Sin embargo, usar solo el nombre de usuario y el correo electrónico hace que sea muy fácil denegar el servicio a alguien y sacarlo de su cuenta.
Cuando se trata de un limitador de velocidad simple, quieres limitar la velocidad tanto en la dirección IP como en el nombre de usuario y el correo electrónico, pero manteniéndolos independientes entre sí para evitar que uno se pueda rotar fácilmente para eludir el limitador.
Como era de esperar, Laravel tiene lo necesario con su función de Límites de Velocidad Múltiples:
RateLimiter::for('login', function (Request $request) {
return [
Limit::perMinute(500),
Limit::perMinute(5)->by($request->ip()),
Limit::perMinute(5)->by($request->input('email')),
];
});
Al pasar un array de límites a RateLimiter, podemos definir diferentes reglas de límite de velocidad, todas las cuales deben aprobarse para que se conceda el acceso.
Esto le permite:
- Bloquear la ruta en caso de tráfico inusualmente alto (lo que podría indicar un ataque de robo de credenciales en direcciones IP y cuentas).
- Bloquear direcciones IP individuales que puedan afectar su punto final.
Bloquear intentos de fuerza bruta en una sola cuenta en varias direcciones IP.
Es muy simple y ofrece mucho más poder defensivo que una única tasa limitada vinculada tanto a la dirección IP como al nombre de usuario/correo electrónico.
Antonio Jenaro
Web Developer
Fuente: Securing laravel
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión