0Pricing
Node.js Backend Development Bootcamp · Aula

Limitação de taxa e proteção contra força bruta

Defenda suas APIs do Node.js contra abuso, negação de serviço e ataques de preenchimento de credenciais implementando limitação de taxa e proteção contra força bruta.

Limitação de taxa e proteção contra força bruta é uma aula grátis de Node.js Backend Development Bootcamp no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Node.js Backend Development Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Node.js Backend Development Bootcamp inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

Why Limit Requests?

Without limits, a single client can hammer your API thousands of times per second — scraping data, guessing passwords, or simply overloading the server.

Rate limiting caps how many requests a client may make in a time window.

Attacks Rate Limiting Prevents

Rate limiting is a frontline defense against:

  • Brute-force login attempts
  • Credential stuffing with leaked passwords
  • Denial-of-service floods
  • Scraping and API abuse

How Counting Works

A rate limiter tracks a counter per client (usually keyed by IP). Each request increments it; when the count exceeds the limit within the window, further requests are rejected with 429 Too Many Requests.

express-rate-limit

The express-rate-limit package adds rate limiting as middleware in a few lines. Configure the window and max requests.

const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 100
});

Applying the Limiter

Apply globally with app.use, or to specific routes. Once over the limit, clients automatically receive a 429 response.

app.use(limiter);
// or just protect one route:
app.use('/api/', limiter);

Stricter Limits on Login

Login endpoints are prime brute-force targets, so give them a tighter limit than the rest of your API.

const loginLimiter = rateLimit({
  windowMs: 10 * 60 * 1000,
  max: 5,
  message: 'Too many login attempts'
});
app.post('/login', loginLimiter, handler);

Shared Store for Multiple Servers

The default in-memory store does not work when you run multiple instances behind a load balancer — each has its own counter. Use a shared store like Redis so limits apply across all servers.

const RedisStore = require('rate-limit-redis');
const limiter = rateLimit({
  store: new RedisStore({ /* client */ }),
  max: 100,
  windowMs: 60000
});

Trusting the Real Client IP

Behind a proxy, every request appears to come from the proxy's IP. Tell Express to trust the proxy so the limiter keys on the real client IP from X-Forwarded-For.

app.set('trust proxy', 1);

Account Lockout

Beyond IP limits, track failed logins per account. After several failures, temporarily lock the account or require a CAPTCHA — defeating distributed brute-force from many IPs.

if (user.failedAttempts >= 5) {
  return res.status(423).json({ error: 'Account locked' });
}

Slowing Down Instead of Blocking

An alternative to hard blocks is progressive delay: each repeated request waits a little longer. The express-slow-down package adds latency rather than rejecting outright.

const slowDown = require('express-slow-down');
const speedLimiter = slowDown({
  windowMs: 60000,
  delayAfter: 50,
  delayMs: () => 500
});

Informing Clients

Good limiters send RateLimit headers telling clients their remaining quota and reset time, so well-behaved apps can back off gracefully.

const limiter = rateLimit({
  max: 100,
  windowMs: 60000,
  standardHeaders: true
});

Quick Check

Test your rate-limiting knowledge.

Recap

You learned to protect APIs from abuse:

  • Rate limiting caps requests per client and returns 429 when exceeded
  • express-rate-limit adds it as middleware; use stricter limits on login
  • Use a Redis store across multiple servers and set trust proxy for real IPs
  • Add account lockout, progressive slow-down, and informative headers

These layers thwart brute-force, scraping, and DoS attacks.

Perguntas Frequentes

A aula “Limitação de taxa e proteção contra força bruta” é grátis?

Sim — o texto completo de “Limitação de taxa e proteção contra força bruta” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Node.js Backend Development Bootcamp, atualize para CoddyKit PRO. O curso de Node.js Backend Development Bootcamp inclui 4 aulas no total.

O que vou aprender em “Limitação de taxa e proteção contra força bruta”?

Defenda suas APIs do Node.js contra abuso, negação de serviço e ataques de preenchimento de credenciais implementando limitação de taxa e proteção contra força bruta. Você pratica Node.js Backend Development Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Node.js Backend Development Bootcamp?

Nenhuma experiência prévia é necessária. Node.js Backend Development Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Limitação de taxa e proteção contra força bruta”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Node.js Backend Development Bootcamp?

Sim. Cada aula de Node.js Backend Development Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Entendendo os 10 Principais Riscos da OWASP
  2. Práticas de Codificação Segura em Node.js
  3. Criptografia e Hashing de Dados
  4. Limitação de taxa e proteção contra força bruta
← Voltar para Node.js Backend Development Bootcamp