¿Qué es la limitación de velocidad? | Limitación de velocidad y bots

La limitación de velocidad bloquea a los usuarios, bots o aplicaciones que hacen un uso excesivo o indebido de una propiedad web. La limitación de velocidad puede detener ciertos tipos de ataques de bots.

Objetivos de aprendizaje

Después de leer este artículo podrás:

  • Entender el objetivo de la limitación de velocidad
  • Más información sobre cómo funciona la limitación de velocidad
  • Más información sobre algunas aplicaciones prácticas de la limitación de velocidad
  • Explicar la diferencia entre la limitación de velocidad y otros tipos de gestión de bots

Copiar enlace del artículo

¿Qué es Rate Limiting?

Limitación de velocidad en la señal de límite de velocidad junto a la carretera - 75 solicitudes por minuto

La limitación de velocidad es una estrategia para limitar el tráfico de red. Pone un tope a la frecuencia con la que alguien puede repetir una acción en un determinado marco de tiempo, por ejemplo, intentar iniciar sesión en una cuenta. La limitación de velocidad puede ayudar a detener ciertos tipos de actividades de bots maliciosos. También puede reducir la presión sobre los servidores web. Sin embargo, la limitación de velocidad no es una solución completa para gestionar la actividad de los bots.

¿Qué tipos de ataques de bots se detienen con la limitación de la velocidad?

La limitación de velocidad se suele emplear para impedir que los bots perjudiciales afecten de forma negativa a un sitio web o aplicación. Entre los ataques de bots que la limitación de velocidad puede ayudar a mitigar se incluyen:

La limitación de velocidad también protege contra el uso excesivo de la API, lo cual no es necesariamente malicioso ni se debe a la actividad de los bots, pero que conviene prevenir.

¿Cómo funciona la limitación de velocidad?

La limitación de velocidad se ejecuta dentro de una aplicación, en lugar de ejecutarse en el propio servidor web. Normalmente, la limitación de velocidad se basa en el seguimiento de las direcciones IP de las que proceden las solicitudes y en el seguimiento del tiempo que transcurre entre cada solicitud. La dirección IP es la principal forma en que una aplicación identifica quién o qué está realizando la solicitud.

Una solución de limitación de velocidad mide la cantidad de tiempo entre cada solicitud de cada dirección IP, y también mide el número de solicitudes en un período específico. Si hay demasiadas solicitudes de una sola IP en un período determinado, la solución de limitación de velocidad no atenderá las solicitudes de la dirección IP durante un tiempo determinado.

En esencia, una aplicación con límite de velocidad dirá, "Oye, baja la velocidad," a los usuarios únicos que están realizando solicitudes a mucha velocidad. Esto es comparable a un agente de policía que para a un conductor por exceder el límite de velocidad establecido en esa carretera, o a un padre que le dice a su hijo que no coma tantos caramelos en tan poco tiempo.

¿Qué es una dirección IP?

Una dirección IP es el identificador numérico (o, en IPv6, alfanumérico) único asignado a cualquier dispositivo que se conecte a Internet. Cada dispositivo tendrá su propia dirección IP mientras esté conectado, y al igual que una dirección física o un número de teléfono, esto permite que los dispositivos puedan enviar mensajes de ida y vuelta. Una dirección tradicional (IPv4) tiene el siguiente aspecto 198.41.129.1

Para los dispositivos de los usuarios, las direcciones IP no suelen ser permanentes, ya que no hay suficientes direcciones IP para todos en IPv4. En su lugar, el proveedor de acceso a Internet (ISP) del usuario asigna dinámicamente las direcciones según se van conectando los dispositivos a Internet.

Una solución de limitación de velocidad puede utilizar una dirección IP como base para determinar qué dispositivos están realizando demasiadas solicitudes y deben bloquearse temporalmente.

¿Cómo funciona la limitación de velocidad con los inicios de sesión de los usuarios?

A los usuarios se les puede bloquear el acceso a una cuenta si intentan iniciar sesión sin éxito demasiadas veces en un corto período de tiempo. Esto sucede cuando un sitio web tiene implementada la limitación de velocidad en el inicio de sesión.

Esta precaución existe, no para frustrar a los usuarios que han olvidado sus contraseñas, sino para bloquear los ataques de fuerza bruta en los que un bot prueba miles de contraseñas diferentes para adivinarla y entrar en la cuenta. Si un bot solo puede hacer 3 o 4 intentos por hora, es estadísticamente improbable que un ataque de este tipo tenga éxito.

La limitación de la velocidad en una página de inicio de sesión puede aplicarse en función de la dirección IP del usuario que intenta iniciar la sesión, o en función del nombre de usuario. Lo ideal sería utilizar una combinación de ambos, porque:

  • Si la limitación de velocidad solo se aplica por dirección IP, los atacantes de fuerza bruta podrían saltársela al intentar iniciar sesión desde varias direcciones IP (quizás utilizando una botnet).
  • Si solo se hace por nombre de usuario, cualquier atacante que tenga una lista de nombres de usuario conocidos puede probar una variedad de contraseñas habituales con esos nombres de usuario, y es probable que consiga entrar en varias cuentas, todas desde la misma dirección IP.

Ya que la limitación de velocidad es necesaria para evitar estos ataques de fuerza bruta, los usuarios que hayan olvidado sus contraseñas pueden verse sometidos a esta limitación junto con los bots maliciosos. Es probable que los usuarios acaben viendo un mensaje de "demasiados intentos de inicio de sesión" y se les pida que lo intenten de nuevo en un plazo determinado, o se les avise de que tienen el acceso bloqueado a sus cuentas.

¿Cómo funciona la limitación de velocidad en las API?

Una API, o interfaz de programación de aplicaciones, es una forma de solicitar la funcionalidad de un programa. Las API son invisibles para la mayoría de los usuarios, pero son extremadamente importantes para que las aplicaciones funcionen como es debido. Por ejemplo, el sitio web de un restaurante podría depender de la API de un servicio de reserva de mesas para que los clientes puedan hacer reservas en línea. O una plataforma de comercio electrónico podría integrar la API de una empresa de transporte para ofrecer a los usuarios unos gastos de envío precisos.

Cada vez que una API responde a una solicitud, el propietario de esa API tiene que pagar por el tiempo de computación: los recursos del servidor necesarios para que el código se ejecute y produzca una respuesta a esa solicitud de la API. En el ejemplo anterior, la integración de la API del restaurante hará que el servicio de reserva de mesas pague por el tiempo de computación cada vez que un cliente del restaurante realice una reserva.

Por esta razón, cualquier aplicación o servicio que ofrezca una API para desarrolladores tendrá limitaciones en cuanto al número de llamadas a la API que puede realizar cada usuario único por hora o día. De este modo, los desarrolladores de terceros no utilizan en exceso una API.

La limitación de velocidad también puede motivar a los desarrolladores a pagar más por aprovechar la API: lo habitual que es que solo puedan hacer un número determinado de llamadas a la API antes de pagar más por el servicio de la API.

La limitación de la velocidad de las API también ayuda en la protección contra los ataques de bots maliciosos. Un atacante puede utilizar bots para hacer tantas llamadas repetidas a una API que provoque que el servicio no esté disponible para nadie más, o que directamente deje de funcionar. Esto es un tipo de ataque DoS o DDoS.

¿Cómo utilizan la limitación de velocidad las plataformas de redes sociales como Twitter e Instagram?

La limitación de velocidad de las plataformas de redes sociales es básicamente una limitación de velocidad de la API. Por ejemplo, cualquier aplicación de terceros que integre Twitter solo puede actualizar para buscar nuevos tweets o mensajes una cierta cantidad de veces por hora. Instagram cuenta con límites similares para las aplicaciones de terceros. Por esta razón, hay usuarios que pueden encontrarse ocasionalmente con mensajes de "límite de velocidad excedido".

Estos límites no se suelen aplicar a los usuarios que utilizan directamente la plataforma de medios sociales.

¿Cuál es la diferencia entre la gestión de bots y la limitación de velocidad?

La limitación de velocidad es bastante unidimensional: aunque es útil, solo puede detener tipos muy específicos de actividad de bots. Además, la limitación de velocidad no es solo para los bots, sino para limitar el uso en general. Por ejemplo, la limitación de velocidad de Cloudflare protege ante los ataques DDoS, el abuso de la API y los ataques de fuerza bruta, pero no mitiga necesariamente otras formas de actividad de bots maliciosos, y no distingue entre bots beneficiosos y perjudiciales.

En cambio, la gestión de bots puede detectar de forma holística la actividad de los bots en general. Por ejemplo, Cloudflare Bot Management utiliza el aprendizaje automático para identificar posibles bots, lo que le permite bloquear una mayor variedad de ataques de bots (como relleno de credenciales, publicaciones de spam, acumulación de inventario, etc.). Las organizaciones más pequeñas también pueden bloquear los bots perjudiciales con Super Bot Fight Mode, disponible en los planes Pro y Business de Cloudflare.