# Побудувала засоби протидії зловживанням за принципом fail‑closed — 22 обмежувачі частоти на Redis, Cloudflare Turnstile, ідемпотентність запитів та прив'язку до origin — щоб платформа відсікала ботів і напливи, а не довіряла тим, хто її викликає.

2025

**Ситуація.** Публічний каталог компаній і фахівців стає мішенню того самого дня, коли виходить у світ. Скраперам потрібні дані, спам‑акаунтам — охоплення, а ендпоінтом, обслуговування якого коштує платформі реальних грошей — пошук, експорт, будь‑що, що торкається зовнішнього API, — варто зловживати вже тому, що викликати його безкоштовно. Нічого з цього не є злим наміром, спрямованим саме проти цієї платформи; це фонова погода відкритого інтернету.

**Завдання.** Дорогим і вразливим до зловживань шляхам потрібні були обмеження, які тримають під тиском, зокрема під тиском недоступності власної залежності обмежувача.

**Дія.** Обмежувачів частоти запитів тут 22, і кожен сконструйований під той шлях, який він захищає, замість одного глобального ліміту, бо спроба входу, пошук і масовий експорт стають зловживанням на кардинально різних швидкостях. Стан живе в Redis, тож ліміт спільний для всіх інстансів, а не існує окремо в кожному процесі, звідки його тривіально обійти. Важливе рішення — що відбувається, коли Redis недоступний: обмежувачі закриваються (fail closed). Трафік відхиляється, а не пропускається помахом руки, — це менш зручна відповідь і єдина, яку можна відстояти. Навколо них стоять Cloudflare Turnstile на шляхах, які варто перевіряти челенджем, 351 рядок мідлвару ідемпотентності, щоб повторений запис не перетворився на два, origin‑lock, що відкидає запити, які прийшли не через парадні двері, і власний челендж на самому каталозі.

**Результат.** Зловживання стає дорогим для того, хто зловживає, і дешевим для платформи, а збій у власному сховищі обмежувача деградує до відмови, а не до відчинених дверей. Закриватися при збої справді означає, що проблема з Redis стає проблемою, видимою користувачам, — і це прийнято свідомо, бо альтернатива в тому, що проблема з Redis стає проблемою з рахунками.

---

- Роль: Інженер з безпеки
- Категорії: [Backend‑розробка](https://software.engineer.company/uk/categories/backend/), [API та інтеграції](https://software.engineer.company/uk/categories/api/), [Надійність і резервне копіювання](https://software.engineer.company/uk/categories/reliability/), [Мережі та VPN](https://software.engineer.company/uk/categories/networking/), [Безпека](https://software.engineer.company/uk/categories/security/), [Оптимізація продуктивності](https://software.engineer.company/uk/categories/performance/)
- Послуги: [Backend- та API‑розробка](https://software.engineer.company/uk/services/backend-development/), [Надійність та моніторинг (SRE)](https://software.engineer.company/uk/services/site-reliability/), [Безпека та керування доступом](https://software.engineer.company/uk/services/security-access/)

<https://software.engineer.company/uk/portfolio/built-fail-closed-abuse-controls-and-rate-limiting-100/>
