К практике
ПродвинутыйRate LimitБезопасностьMiddleware
ПродвинутыйRate LimitБезопасностьMiddleware
Rate Limiting
Ограничиваем количество запросов от одного клиента за промежуток времени.
Нажми на любой элемент диаграммы для объяснения
Шаг 1 из 2
1
Зачем нужен Rate Limiting
Rate limiting защищает API от злоупотреблений: спама, брутфорса, DDoS.
Алгоритм: храним счётчик запросов для каждого клиента. Если превышен лимит — отвечаем 429 Too Many Requests.
Данные: { clientId: { count: number, resetAt: number } }
javascript
const requests = {}; // { clientId: { count, resetAt } }
const WINDOW_MS = 60_000; // 1 минута
const MAX_REQUESTS = 5;
app.use((req, res, next) => {
const clientId = req.headers['x-client-id'] || req.ip;
const result = checkRateLimit(requests, clientId, WINDOW_MS, MAX_REQUESTS);
res.setHeader('X-RateLimit-Remaining', result.remaining);
if (!result.allowed) {
return res.status(429).json({ error: 'Too many requests' });
}
requests[clientId] = result.updatedState; // обновляем состояние
next();
});