Ограничение частоты запросов с помощью хуков
Реализуйте ограничение частоты запросов в хуке handle(), чтобы защитить маршруты API.
«Ограничение частоты запросов с помощью хуков» — бесплатный урок Sveltejs Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Sveltejs Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Sveltejs Academy содержит 4 уроков всего.
Зачем ограничивать частоту
Защищайте API от злоупотреблений: перебора паролей, сбора данных и случайной перегрузки.
Реализация в handle
Отслеживайте запросы для каждого IP в памяти или Redis и отклоняйте их при превышении лимита.
const counts = new Map();
export async function handle({ event, resolve }) {
const ip = event.getClientAddress();
const n = (counts.get(ip) || 0) + 1;
counts.set(ip, n);
if (n > 100) return new Response("Too many", { status: 429 });
return resolve(event);
}Скользящее окно
Используйте алгоритм скользящего окна для справедливого ограничения частоты запросов.
На основе Redis
При развёртывании нескольких экземпляров храните counts в Redis или другом общем хранилище.
Лимиты для отдельных маршрутов
Устанавливайте разные лимиты для разных маршрутов, например более строгий для /login.
Статус 429
Возвращайте HTTP 429 с заголовком Retry-After, чтобы клиенты знали, когда повторить запрос.
Подсказки в заголовках
Устанавливайте заголовки X-RateLimit-*, чтобы сообщать клиентам об их квоте.
Лимиты для пользователей
Для аутентифицированных пользователей используйте ID пользователя как ключ лимита, чтобы обеспечить справедливость.
Библиотеки
Используйте готовые библиотеки, например sveltekit-rate-limiter, вместо собственной реализации.
Журналирование
Записывайте запросы, ограниченные по частоте, чтобы обнаруживать атаки и настраивать лимиты.
Уровень CDN
Используйте Cloudflare или аналогичный сервис для применения базовых ограничений на периферии, до того как запросы достигнут приложения.
Быстрая проверка
Какой код состояния следует возвращать при превышении лимита частоты запросов?
Итоги
Реализуйте ограничение частоты запросов в хуке handle. Для конфигураций с несколькими экземплярами используйте Redis, а при превышении лимита возвращайте 429 с Retry-After.
Часто задаваемые вопросы
Урок «Ограничение частоты запросов с помощью хуков» бесплатный?
Да — полный текст урока «Ограничение частоты запросов с помощью хуков» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Sveltejs Academy, подпишись на CoddyKit PRO. Курс Sveltejs Academy содержит 4 уроков всего.
Чему я научусь в уроке «Ограничение частоты запросов с помощью хуков»?
Реализуйте ограничение частоты запросов в хуке handle(), чтобы защитить маршруты API. Ты практикуешь Sveltejs Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Sveltejs Academy?
Предыдущий опыт не требуется. Sveltejs Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Ограничение частоты запросов с помощью хуков»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Sveltejs Academy?
Да. Каждый урок Sveltejs Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Защита CSRF в действиях форм
- Предотвращение XSS в {#html}
- Переменные окружения: $env/static и $env/dynamic
- Ограничение частоты запросов с помощью хуков