Выбор ответа Middle Безопасность бэкенда обновлено
Rate limit на нескольких экземплярах
Вопрос
На вход стоит лимит 5 попыток в минуту, счётчик хранится в памяти процесса. Сервис запущен в 4 репликах. Сколько попыток реально получит злоумышленник?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: До 20: у каждой реплики свой счётчик. Каждая реплика считает только свои запросы, а балансировщик раскидывает попытки по всем.
Варианты ответа
- 5, лимит общий на сервис
- Неограниченно: лимит в памяти не работает вовсе
- 1, остальные реплики заблокируют
- До 20: у каждой реплики свой счётчикправильный ответ
Разбор
Каждая реплика считает только свои запросы, а балансировщик раскидывает попытки по всем. Получается до 5 × 4. Общий счётчик держат в Redis (атомарный INCR с TTL или скользящее окно).
- 5 было бы с общим хранилищем.
- 1 никак не следует из условия.
- Лимит работает, но на каждой реплике отдельно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Безопасность бэкенда»
- Безопасный INSERT: параметры и белый список колонок
- CORS: проверка Origin по белому списку
- Проверка claims JWT после подписи
- deepMerge без prototype pollution
- Rate limiter на token bucket
- Кто превысил лимит запросов: скользящее окно
- Код-ревью: регистрация, вход и сброс пароля
- Как защитить Node.js API