Como configurar rate limiting no servidor para proteger uma API contra abuso
Olá, querido(a) cliente! 👋 Seja bem-vindo(a) ao nosso guia de proteção de API com rate limiting, seu novo aliado contra acessos excessivos e abusos. Aqui, você vai aprender, passo a passo, como proteger sua API — mesmo sem ser especialista em servidores. Vamos juntos, como um time de defesa digital?
Dica Sensei: Rate limiting é como um "limite de acesso" inteligente. Ele evita que alguém faça milhares de requisições em segundos — o que pode travar seu sistema ou gerar custos inesperados.
Por que usar rate limiting?
Imagine que sua API é uma porta de entrada para um serviço. Se não houver controle, alguém pode tentar acessá-la milhares de vezes por minuto — isso é chamado de abuso ou ataque de força bruta. Com rate limiting, você define quantas requisições um usuário pode fazer em um tempo determinado — por exemplo: 100 requisições por minuto.
Passo a passo: configurando rate limiting no seu servidor GeHost
Na GeHost, usamos o sistema de segurança baseado em Apache e mod_security, que permite configurar limites de acesso de forma simples e eficaz. Vamos lá!
-
Entre no cPanel
Abra seu navegador e acesse o cPanel da sua conta GeHost. Use o link que você recebeu por e-mail ou o painel de controle da sua hospedagem.
-
Encontre a ferramenta de segurança
Na tela inicial do cPanel (chamada de Home), procure pela seção Security (Segurança). Lá, você verá uma ferramenta chamada ModSecurity ou Security — clique nela.
-
Verifique se o ModSecurity está ativo
Na tela do ModSecurity, você verá uma lista de regras. Procure por regras relacionadas a rate limiting ou throttling. Se não houver, não se preocupe: você pode ativar regras personalizadas ou usar um arquivo de configuração.
-
Edite o arquivo de configuração (opcional, mas poderoso)
Se você tem acesso ao Gerenciador de Arquivos, vá até a pasta da sua API (geralmente dentro de
public_htmlouapi). Crie um arquivo chamado.htaccess(se ainda não existir) e adicione estas linhas:SetEnv limit_access 100 SetEnv limit_time 60 # Limita a 100 requisições por minuto por IP RewriteCond %{ENV:limit_access} !^$ RewriteCond %{ENV:limit_time} !^$ RewriteCond %{REMOTE_ADDR} ^([0-9]{1,3}\.){3}[0-9]{1,3}$ RewriteCond %{REQUEST_URI} ^/api/ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ RewriteCond %{ENV:limit_access} ^([0-9]+)$ RewriteCond %{ENV:limit_time} ^([0-9]+)$ Rew