Servidor & DevOps 6 visualizações

Como configurar rate limiting no servidor para proteger uma API contra abuso

Ver no WHMCS

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á!

  1. 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.

    Tela de LOGIN do cPanel com campos Usuário e Senha e botão Log in
  2. 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.

    Painel inicial (home) do cPanel com os grupos de ferramentas como E-mail, Arquivos, Segurança, etc.
  3. 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.

  4. 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_html ou api). 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                    
Precisa de Ajuda?

Nossa equipe está pronta para resolver suas dúvidas.