ДокументацияРуководство РазработчикаБезопасность, Защита и Ограничение Запросов (Rate Limiting)

Безопасность, строгая валидация и ограничение запросов (Rate Limiting)

Защитите ваш магазин от DDoS-атак, перебора паролей и вредоносных ботов с помощью продвинутых алгоритмов в Redis.


1. Архитектура ограничения запросов на базе Redis

Входящие запросы по IP анализируются с нулевой задержкой в оперативной памяти Redis по алгоритму скользящего окна (Sliding Window).

  • Критические маршруты API: Для защиты от брутфорса запросы аутентификации и оформления заказа ограничены до 5 в минуту.
  • Общая навигация: Просторные лимиты, позволяющие пользователям комфортно просматривать каталог товаров.

2. Политики безопасности и периметровая защита Caddy

Сервер Caddy служит первой линией обороны с автоматическим шифрованием TLS 1.3 и управляемыми SSL-сертификатами.

Защита платежных маршрутов

Банковский уровень надежности

Изоляция платежных эндпоинтов и криптографическая проверка подписей входящих вебхуков.

Санитизация и валидация входящих данных

Строгие схемы на Zod

Валидация форм с помощью схем Zod для защиты от SQL-инъекций и XSS-атак.

Реализация Rate Limiting в обработчиках API
typescript
// ── OTP request: phone (POST /auth/customer/phone-auth) ───────────────
{
method: "POST",
matcher: "/auth/customer/phone-auth",
middlewares: [
createRateLimitMiddleware({
maxAttempts: 3,
windowMs: 60 * 60 * 1000, // 1 hour
countOn: "success", // only count actual OTP sends
message: "Too many OTP requests. Please try again later.",
}),
],
},
// ── OTP register: phone ───────────────────────────────────────────────
{
method: "POST",
matcher: "/auth/customer/phone-register",
middlewares: [
createRateLimitMiddleware({
maxAttempts: 5,
windowMs: 30 * 60 * 1000, // 30 minutes
countOn: "failure", // only penalize wrong codes
message: "Too many failed attempts. Please try again later.",
}),
],
},
Преимущества хранения счетчиков в памяти Redis
Счетчики запросов хранятся в оперативной памяти Redis внутри Docker, гарантируя проверку за микросекунды даже при высоких нагрузках.