Nossa opinião

O que a limitação de taxa por rede resolve e os limites por chave não

Um limite de taxa vinculado apenas a uma chave de API faz uma suposição silenciosa: que uma chave corresponde a um usuário legítimo, que a usa de uma forma razoavelmente previsível. Essa suposição falha com mais frequência do que o projeto prevê. Uma chave pode ser compartilhada por uma equipe, embutida em um aplicativo do lado do cliente em que muitos visitantes diferentes disparam requisições com a mesma credencial, ou gerada várias vezes por alguém que quer justamente acumular várias chaves para contornar o limite de uma única chave.

Aplicamos limites de taxa no nível da rede, além do nível da chave, exatamente por esse motivo. Cada rede, um bloco /24 para IPv4 ou um bloco /48 para IPv6, recebe uma cota gratuita de 2.500 requisições por dia, compartilhada entre o uso sem chave e quaisquer chaves registradas a partir de endereços dessa rede. Uma pessoa não consegue gerar dez chaves na mesma rede e multiplicar sua cota gratuita por dez, porque o teto por rede detecta esse padrão independentemente de quantas chaves separadas existam por baixo dele.

Isso não se trata principalmente de impedir abusos mal-intencionados, embora também faça isso. Trata-se de manter a cota gratuita significativa para todos que a usam honestamente. Um recurso compartilhado como um plano gratuito só continua generoso se essa generosidade não for desviada discretamente, em massa, por um pequeno número de contas que contornam o limite por chave. As cotas por rede mantêm a conta do plano gratuito mais próxima do que ele foi realmente pensado para oferecer: uma cota diária real por origem, e não por credencial que essa origem por acaso possua.

Há um caso de uso legítimo que isso precisa ter o cuidado de não punir: vários usuários ou serviços genuínos operando legitimamente a partir da mesma rede, como um escritório, um ambiente de hospedagem compartilhada ou uma grande organização por trás de um pequeno número de endereços IP públicos. É exatamente por isso que publicamos vagas de IP rotativas e damos visibilidade do uso da rede por meio de cabeçalhos de cota, incluindo um cabeçalho específico que mostra quantas das vagas de IP da sua chave estão em uso em relação ao limite. Uma equipe legítima que compartilha uma rede pode ver sua situação real, em vez de descobrir um teto compartilhado apenas quando o atinge de forma inesperada.

Limitar a taxa apenas no nível da chave é mais simples de construir e de explicar e, para muitas APIs, provavelmente é suficiente. Para um serviço com um plano gratuito significativo, especificamente, a limitação apenas por chave deixa uma lacuna óbvia: a cota gratuita nunca foi pensada para ser um recurso que você pudesse multiplicar gerando mais credenciais, e um limite que não leva isso em conta não está realmente protegendo o que diz proteger. Sobrepor um teto por rede ao limite por chave fecha essa lacuna sem exigir que cada usuário legítimo prove que não é a exceção.