Estrangulamiento/Throttling para limitar peticiones de los clientes
En este apartado aprenderemos a limpiar la cantidad de solicitudes que puede realizar un cliente, lo cual, es particularmente útil para una Rest API, al momento de realizar consultas a la misma o nuestra aplicación web, con esto, podemos garantizar que no existan abusos en los cuales un usuario pueda realizar múltiples solicitudes en un cortó periodo de tiempo, por ejemplo:
Route::middleware('throttle:60,1')->group(function () {
// Your routes Here
});
Con el código anterior, estamos indicando mediante el parámetro 60 y 1 que en un plazo de 1 minuto el usuario puede enviar 60 peticiones.
Transcripción del vídeo
Te quería Mostrar cómo puedes limitar las peticiones enviadas por un cliente es decir básicamente denegar la petición de un cliente por enviar demasiadas peticiones en determinado tiempo te poderá preguntar de repente por qué esto es útil bueno básicamente por varios motivos:
- Uno de ellos puede ser mejorar el desempeño de la aplicación por ejemplo evitar que un posible cliente pueda realizar múltiples peticiones a nuestros servidor en poco tiempo suponte que tienes o simplemente limitar algunos recursos suponte que estás haciendo una especie de rifa, y por lo tanto, mientras más peticiones puedes enviar más posibilidades tiene de ganar y por lo tanto un cliente atacante puede enviar múltiples peticiones en poco tiempo mediante un robot que acaba de implementar o algo por el estilo simplemente para mejorar las posibilidades de de ganar el premio.
- Otro ejemplo puede ser de que tienes algún servicio en el cual los usuarios se encuentran suscritos y están pagando determinada cantidad de dinero por lo tanto tiene determinada cantidad de peticiones que puede realizar en determinado tiempo en ese tiempo por ejemplo un mes 30 peticiones O 100 peticiones en un mes fue lo que pagó por lo tanto lo puedes también limitar de esa manera para que otra vez solamente puedas realizar esas 30 peticiones a un recurso protegido en ese mes. Esto lo puedes colocar en cualquier tipo de ruta ya sea las rutas que tengamos definido a nivel de web o a nivel De Api como tú quieras entonces ahí te di algunos ejemplos de cómo funciona y para qué lo pudieras emplear.
Como puedes suponer ya en este punto viene siendo un middleware:
Route::middleware('throttle:60,1')->group(function () {
// Your routes Here
});
Recuerda que es el intermediario ya hemos utilizado e implementado algunos y funcionan de la siguiente manera bueno usualmente vamos a querer colocarlo mediante unas rutas agrupadas es decir aquí colocamos un group y definimos aquí nuestras rutas que tienen que cumplir con el siguiente milwar colocamos el midwar y le pasamos un par de parámetros:
60,1
Qué significa esto básicamente aquí estamos indicando cuántas peticiones puede realizar el cliente en determinado tiempo y este determinado tiempo viene expresado en minutos por lo tanto en este ejemplo serían 60 peticiones (60 request) en un plazo de un minuto y eso viene siendo aquí prácticamente todo.
Si intentas acceder superado el límite vas a ver una pantalla como la siguiente que dice 419 demasiadas peticiones bloqueando el acceso; puedes emplearlo sobre las rutas del web y también en la de la Rest Api para tal fin.
Ya aprendiste a limitar la cantidad de peticiones que puede realizar el cliente en determinado tiempo
- Andrés Cruz
Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos Curso y Libro Laravel 11 con Tailwind Vue 3, introducción a Jetstream Livewire e Inerta desde cero - 2025.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter