Від скомпрометованого клубу до контрольованої платформи доступу

Архітектура системи //
1. Огляд проєкту
Це був живий membership-продукт із сайтом, оплатою, CRM, Telegram-доступом і кількома історичними автоматизаціями. На момент підключення система вже мала ознаки компрометації: старий PHP-код, backdoor-поведінку, SEO-spam, розмиті межі доступів і платіжну логіку, яку було небезпечно просто переносити в новий реліз
Мене запросили не для косметичного ремонту, а щоб повернути продукт у контрольований стан і запустити його заново без перенесення старого зараженого середовища
2. Що потрібно було вирішити
3. Рішення та реалізація
Чисте середовище замість blind migration
Я провів інвентаризацію доменів, серверів, баз, інтеграцій і старих залежностей, зняв повний резерв файлів, бази та журналів і перевірив відновлення в ізольованому середовищі. Новий deployment зібрано окремо, а старий код, ключі та невідомі інтеграції не переносилися автоматично
Контрольований сайт і платіжний маршрут
Перезібрано mobile-first сайт, тарифну логіку, форму заявки та шлях до оплати. На серверному боці додано перевірку підпису, merchant, order ID, суми, валюти та статусу платежу, а дублікати callback більше не можуть повторно нарахувати доступ
Доступ як окрема бізнес-сутність
Платіж більше не означає сліпе виконання кількох розрізнених команд. Система зв’язує контакт, право доступу, строк, продовження, заморозку та фактичний Telegram ID, перевіряє актуальність права перед вступом і зберігає ручні винятки окремо від платежів

Перевірка перед відкриттям продажів
Я прогнав 16 наборів тестів, включно з повторним callback, простроченим правом, невідомим профілем, чинним учасником, заявкою на вступ, ручною видачею та сценаріями відмови. Окремо перевірив реальний малий платіж у тестовому контурі, CRM-запис і поведінку доступу

4. Результат
5. Технічний результат
Замість системи, де компрометацію можна було лише припускати, з’явився контрольований membership-продукт із чистим deployment-контуром, відтворюваними правилами доступу, ідемпотентною обробкою платежів, ручним review для винятків і перевіреним планом відновлення
Це був не просто security fix і не просто новий сайт. Я відновив керованість продукту після атаки, зберіг робочі права користувачів і відкрив продажі тільки після того, як критичні сценарії можна було перевірити й пояснити