AI Powered SaaS: Stripe + Auth + Billing + Deploy · Урок

Ограничение частоты запросов и защита от перебора

Защитите аутентификацию и API SaaS от злоупотреблений с помощью ограничения частоты запросов, блокировки учётных записей и экспоненциальной задержки, используя быстрое хранилище вроде Redis.

Урок 4 из 413 шагов

«Ограничение частоты запросов и защита от перебора» — бесплатный урок AI Powered SaaS: Stripe + Auth + Billing + Deploy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Powered SaaS: Stripe + Auth + Billing + Deploy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Powered SaaS: Stripe + Auth + Billing + Deploy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Why Rate Limit?

Without limits, attackers can hammer your login endpoint to guess passwords, scrape data, or run up costs on metered APIs. Rate limiting caps how many requests a client can make in a window.

Identifying the Client

Limits are keyed on something that identifies the caller: an IP address, a user ID, or an API key. Choose the key based on what you are protecting.

const key = 'login:' + (userId ?? clientIp);

The Fixed Window Algorithm

The simplest method counts requests per fixed time window. If the count exceeds the limit, reject until the window resets.

// allow 5 requests per 60 seconds
if (count > 5) return reject();

Counting in Redis

Redis is ideal: INCR bumps a counter atomically, and a TTL auto-expires the window. The first request sets the expiry.

const n = await redis.incr(key);
if (n === 1) await redis.expire(key, 60);
if (n > 5) throw new Error('Too many requests');

Sliding Window & Token Bucket

Fixed windows allow bursts at the edges. Sliding window smooths this, and token bucket permits short bursts while enforcing an average rate. Libraries like Upstash Ratelimit implement these for you.

import { Ratelimit } from '@upstash/ratelimit';
const rl = new Ratelimit({ redis, limiter: Ratelimit.slidingWindow(5, '60 s') });

Applying in Middleware

Centralize limiting in Next.js middleware so it runs before every matched request.

export async function middleware(req) {
  const { success } = await rl.limit(req.ip ?? 'anon');
  if (!success) return new Response('Rate limited', { status: 429 });
}

Returning 429 Properly

When limited, respond with status 429 and a Retry-After header telling clients when to try again.

return new Response('Too many requests', {
  status: 429,
  headers: { 'Retry-After': '60' }
});

Account Lockout

For login specifically, track failed attempts per account. After several failures, temporarily lock the account to stop targeted brute force.

const fails = await redis.incr('fail:' + email);
if (fails >= 5) await redis.expire('lock:' + email, 900);

Exponential Backoff

Increase the delay after each failure: 1s, 2s, 4s, 8s. This frustrates automated guessing while barely affecting legitimate users.

const delay = Math.min(2 ** fails, 60) * 1000;

Avoiding False Positives

Be careful not to punish real users:

  • Shared office IPs share a limit — prefer per-user keys when authenticated
  • Reset counters on success
  • Set generous limits for normal usage

Best Practices

Protect endpoints well:

  • Key limits on IP, user, or API key
  • Use Redis with sliding window or token bucket
  • Return 429 with Retry-After
  • Add lockout and backoff for login

Quick Check

Test your rate-limiting knowledge.

Recap

You learned to defend against abuse:

  • Key rate limits on IP, user, or API key
  • Count with Redis INCR and TTL, or use sliding window libraries
  • Return 429 with Retry-After
  • Add account lockout and exponential backoff for logins

Your auth and APIs now resist brute force and flooding.

Можно начать бесплатно

Изучай AI Powered SaaS: Stripe + Auth + Billing + Deploy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

Часто задаваемые вопросы

Урок «Ограничение частоты запросов и защита от перебора» бесплатный?

Да — полный текст урока «Ограничение частоты запросов и защита от перебора» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Powered SaaS: Stripe + Auth + Billing + Deploy, подпишись на CoddyKit PRO. Курс AI Powered SaaS: Stripe + Auth + Billing + Deploy содержит 4 уроков всего.

Чему я научусь в уроке «Ограничение частоты запросов и защита от перебора»?

Защитите аутентификацию и API SaaS от злоупотреблений с помощью ограничения частоты запросов, блокировки учётных записей и экспоненциальной задержки, используя быстрое хранилище вроде Redis. Ты практикуешь AI Powered SaaS: Stripe + Auth + Billing + Deploy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Powered SaaS: Stripe + Auth + Billing + Deploy?

Предыдущий опыт не требуется. AI Powered SaaS: Stripe + Auth + Billing + Deploy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Ограничение частоты запросов и защита от перебора»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Powered SaaS: Stripe + Auth + Billing + Deploy?

Да. Каждый урок AI Powered SaaS: Stripe + Auth + Billing + Deploy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Интеграция OAuth 2.0
  2. Многофакторная аутентификация (MFA)
  3. Ролевое управление доступом (RBAC)
  4. Ограничение частоты запросов и защита от перебора
← Назад к AI Powered SaaS: Stripe + Auth + Billing + Deploy