O que é limitação de taxa? | Limitação de taxa e bots

A limitação de taxa bloqueia usuários, bots ou aplicativos que usam excessivamente ou abusam de uma propriedade da web. O limitação de taxa pode parar certos tipos de ataques de bots.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Entender a finalidade da limitação de taxa
  • Saber como funciona a limitação de taxa
  • Saber sobre alguns dos aplicativos práticos da limitação de taxa
  • Explicar a diferença entre a limitação de taxa e outros tipos de gerenciamento de bots

Copiar o link do artigo

O que é Rate Limiting?

Limitação de taxa na placa de limite de velocidade na estrada - 75 solicitações por minuto

A limitação de taxa é uma estratégia para limitar o tráfego de rede. Ela limita a frequência com que alguém pode repetir uma ação dentro de um determinado período de tempo – por exemplo, tentar fazer login em uma conta. A limitação de taxa pode ajudar a parar certos tipos de atividades de bots maliciosas. Também pode reduzir a tensão nos servidores web. No entanto, a limitação de taxa não é uma solução completa para gerenciar as atividades de bots.

Que tipos de ataques de bot são parados pela limitação de taxa?

A limitação de taxa é geralmente empregada para impedir que os bots ruins afetem negativamente um site ou aplicativo. Os ataques de bot que a limitação de taxa pode ajudar a mitigar incluem:

A limitação de taxa também protege contra o uso excessivo da API, o que não é necessariamente malicioso ou devido à atividade do bot, mas é importante evitar mesmo assim.

Como funciona a limitação de taxa?

A limitação de taxa é executada em um aplicativo, em vez de ser executada no próprio servidor web. Normalmente, a limitação de taxa se baseia no rastreamento dos endereços de IP de origem das solicitações e no rastreamento de quanto tempo decorre entre cada solicitação. O endereço de IP é a principal forma de um aplicativo identificar quem ou o que está fazendo a solicitação.

A solução de limitação de taxa mede a quantidade de tempo entre cada solicitação de cada endereço de IP e também mede o número de solicitações dentro de um período de tempo especificado. Se houver muitas solicitações de um único IP dentro do prazo determinado, a solução de limitação de taxa não atenderá às solicitações do endereço de IP por um determinado período de tempo.

Essencialmente, um aplicativo com limitação de taxa dirá "Ei, diminua a velocidade" para usuários únicos que estão fazendo solicitações em uma taxa rápida. Isso é comparável a um policial que para um motorista por exceder o limite de velocidade da estrada, ou a um pai que diz a seu filho para não comer tanto doce em tão pouco tempo.

O que é um endereço de IP?

Um endereço de IP é o identificador numérico exclusivo (ou, no IPv6, alfanumérico) atribuído a qualquer dispositivo que se conecte à internet. Cada dispositivo terá seu próprio endereço de IP enquanto estiver on-line e, como um endereço físico ou um número de telefone, isso permite que os dispositivos enviem mensagens de um lado para o outro. Um endereço tradicional (IPv4) se parece com isso: 198.41.129.1

Para os dispositivos dos usuário, os endereços de IP geralmente não são permanentes, porque não há endereços de IP suficientes para circular no IPv4. Em vez disso, o provedor de serviços de internet do usuário atribuirá endereços dinamicamente à medida que os dispositivos se conectam à internet.

A solução de limitação de taxa pode usar um endereço de IP como base para determinar quais dispositivos estão fazendo muitas solicitações e devem ser bloqueados temporariamente.

Como funciona a limitação de taxa com logins de usuários?

Os usuários podem ficar sem acesso a uma conta se tentarem, sem sucesso, fazer login muitas vezes em um curto período de tempo. Isso ocorre quando um site tem uma limitação de taxa de login em vigor.

Essa precaução existe, não para frustrar os usuários que esqueceram suas senhas, mas para bloquear ataques de força bruta em que um bot tenta milhares de senhas diferentes para adivinhar a correta e invadir a conta. Se um bot puder fazer apenas 3 ou 4 tentativas de login por hora, é estatisticamente improvável que esse ataque seja bem-sucedido.

A limitação de taxa em uma página de login pode ser aplicada de acordo com o endereço de IP do usuário que está tentando fazer login ou de acordo com o nome de usuário do usuário. Idealmente, ela deveria usar uma combinação dos dois, porque:

  • Se a limitação de taxa for aplicada apenas por endereço de IP, os invasores de força bruta podem contornar isso tentando logins de vários endereços de IP (talvez usando uma botnet).
  • Se for feita apenas por nome de usuário, qualquer invasor que tenha uma lista de nomes de usuários conhecidos pode tentar uma variedade de senhas comumente usadas com esses nomes de usuários e provavelmente invadirá com êxito pelo menos algumas contas, todas do mesmo endereço de IP.

Como a limitação de taxa é necessária para evitar esses ataques de força bruta, os usuários que não conseguem lembrar suas senhas podem ser submetidos à limitação de taxa junto com bots maliciosos. Os usuários provavelmente verão uma mensagem de "muitas tentativas de login" de algum tipo e serão solicitados a tentar novamente dentro de um período de tempo especificado, ou serão avisados de que estão totalmente bloqueados em suas contas.

Como funciona a limitação de taxa para APIs?

Uma API, ou interface de programação de aplicativos, é uma maneira de solicitar a funcionalidade de um programa. As APIs são invisíveis para a maioria dos usuários, mas são extremamente importantes para que os aplicativos funcionem corretamente. Por exemplo, o site de um restaurante pode contar com a API de um serviço de reserva de mesas para permitir que os clientes façam reservas on-line. Ou, uma plataforma de comércio eletrônico pode integrar a API de uma empresa de transporte para fornecer aos usuários custos de envio precisos.

Toda vez que uma API responde a uma solicitação, o proprietário dessa API precisa pagar pelo tempo de computação: os recursos do servidor necessários para que o código seja executado e produza uma resposta a essa solicitação de API. No exemplo acima, a integração da API do restaurante fará com que o serviço de reserva de mesa pague pelo tempo de computação sempre que um cliente do restaurante fizer uma reserva.

Por esse motivo, qualquer aplicativo ou serviço que ofereça uma API para desenvolvedores terá limitações de quantas chamadas de API podem ser feitas por hora ou dia por cada usuário único. Dessa forma, os desenvolvedores terceirizados não abusam de uma API.

A limitação de taxa também pode motivar os desenvolvedores a pagar mais para aproveitar a API: geralmente eles só podem fazer algumas chamadas de API antes de pagar mais pelo serviço da API.

A limitação de taxa para APIs também ajuda a proteger contra ataques de bots maliciosos. Um invasor pode usar bots para fazer tantas chamadas repetidas para uma API que torna o serviço indisponível para qualquer outra pessoa ou trava o serviço completamente. Este é um tipo de ataque DoS ou DDoS.

Como as plataformas de redes sociais como Twitter e Instagram usam a limitação de taxa?

A limitação de taxa das plataformas de redes sociais é basicamente apenas a limitação de taxa da API. Qualquer aplicativo de terceiros que integre o Twitter, por exemplo, só pode atualizar para procurar novos tweets ou mensagens uma certa quantidade de vezes por hora. O Instagram tem limites semelhantes para aplicativos de terceiros. É por isso que os usuários podem ocasionalmente encontrar mensagens de "limite de taxa excedido".

Estes limites normalmente não se aplicam aos usuários que estão usando diretamente a plataforma da rede social.

Qual é a diferença entre o gerenciamento de bots e a limitação de taxa?

A limitação de taxa é bastante unidimensional: embora útil, ela só pode interromper tipos muito específicos de atividades de bots. Além disso, a limitação de taxa não é apenas para bots, mas para limitar o uso em geral. O Rate Limiting da Cloudflare, por exemplo, protege contra ataques DDoS, abusos de API e ataques de força bruta, mas não necessariamente mitiga outras formas de atividades maliciosas de bots e não distingue entre bots bons e ruins.

Por outro lado, o gerenciamento de bots pode detectar holisticamente as atividades de bots em geral. Por exemplo, o gerenciamento de bots da Cloudflare usa aprendizado de máquina para identificar prováveis bots, o que permite bloquear uma variedade maior de ataques de bots (como preenchimento de credenciais, postagem de spam, acumulação de estoque etc.). Organizações menores também podem bloquear bots ruins com o modo de supercombate a bots, disponível nos planos Cloudflare Pro e Business.