Когда вы доверяете данные клиентов и финансы клуба сторонней системе,
есть один разумный вопрос: «А если оно утечёт?»
Ниже — что мы делаем чтобы такого не случилось, и что вы можете контролировать сами.
🔒
Шифрование секретов
Все API-ключи (LanGame, AI-генератор, токены ботов) шифруются алгоритмом
Fernet (AES-128) прямо в момент сохранения. Master-ключ хранится
в переменных окружения сервера — отдельно от базы данных. Если когда-нибудь
утечёт дамп БД — все ваши ключи останутся набором нечитаемых байт.
// что вы получаете
- Никто (даже мы) не видит ваш LanGame-ключ в открытом виде в БД
- Утечка дампа БД ≠ утечка ключей — расшифровать без master-ключа невозможно
- Master-ключ ротируется по запросу — старые шифровки перешифровываются
🔐
Telegram-вход не подделать
Каждый запрос из Mini App подписан Telegram-ом по протоколу HMAC-SHA256.
Подпись проверяется на сервере при каждом действии. Подделать вход с чужого
tg_id невозможно — нужно иметь приватный ключ Telegram, которого нет даже у нас.
Сравнение хэшей идёт через hmac.compare_digest() — без timing-атак.
Дополнительно: двухконтурная авторизация. Кабинет владельца
(@CompclubSpace_bot) и Mini App клиента (@CompclubApp_bot) используют
разные токены. Скомпрометировать один — не значит получить доступ ко
второму. Совсем разные миры.
// что вы получаете
- Невозможно зайти за чужого пользователя без его Telegram-сессии
- Никаких паролей, форм логина, фишинга — авторизация делегирована Telegram
- Утечка одного бот-токена не открывает доступ к другому
🛑
Stop-кран на выплаты
У владельца клуба есть «тревожная кнопка» в кабинете — одним тапом замораживаются
выводы бонусов. Клиенты видят ваше пользовательское сообщение
(«технические работы», «проверка системы»), новые заявки на вывод не создаются,
уже созданные ждут вашего решения.
// когда пригодится
- Подозрение на фарм / координированные злоупотребления — выключить за секунду
- Аудиторская проверка — заморозить движение бонусов на время проверки
- Форс-мажор (отключение света, сбой кассы) — прозрачное сообщение клиентам
⏱
48 часов на оспаривание удаления совладельца
В клубе может быть несколько владельцев (партнёры, семейный бизнес). Если один
захочет «снять» другого — это не сработает в один клик. Запускается
48-часовое окно, удаляемый совладелец немедленно получает Telegram-уведомление
с кнопкой «Я не согласен». Один клик — и удаление отменяется.
За 48 часов вы можете спокойно созвониться, обсудить, найти компромисс. Если
возражений нет — удаление идёт автоматом по cron'у. Никаких внезапных
корпоративных переворотов.
// что вы получаете
- Защита партнёрских отношений от импульсивных решений
- Прозрачность: каждое действие со staff-ролями видно всем владельцам
- Роли разделены — admin не может удалить owner, manager не может снять других owner
📋
Audit trail + Cash handoff с двойным контролем
Каждое действие админа или рецепшена фиксируется в БД: кто, когда, что
сделал, кому, сколько. Выдал кейс — лог. Активировал промокод — лог.
Начислил бонус — лог. Списать или подделать запись задним числом нельзя
(audit-таблица только write-append).
При сдаче смены — Cash handoff с двойным контролем. Сдающий админ
вводит сумму налички в кассе, инкас за смену, расходы. Принимающий —
сумму налички которую он реально видит. Обе цифры фиксируются. При расхождении
> 500 ₽ владелец получает алерт. Если кто-то попытался force-close чужую
смену — отстранённый админ немедленно получит push в Telegram с деталями.
// что вы получаете
- Полный журнал действий персонала — никто не «забыл» что сделал
- Касса передаётся под две подписи цифрово, расхождения подсвечиваются
- Невозможно тихо закрыть чужую смену — отстранённый узнаёт мгновенно
💳
Платежи как у банка
Подписки клуба и продажа AI-pack идут через ЮKassa. Webhook-уведомления
о платежах валидируются по IP-диапазонам ЮKassa — webhook с не-их
сервера отбрасывается до того как попадёт в логику. Идемпотентность через
UNIQUE-индекс на yookassa_payment_id — повторный webhook не создаёт
двойного начисления, даже если ЮKassa решит retry.
Соответствие 54-ФЗ: после оплаты клиенту автоматически уходит фискальный
чек на email/SMS. Все чеки доступны в личном кабинете ЮKassa, выгрузка
для бухгалтерии — одной кнопкой.
// что вы получаете
- Невозможно подделать «успешный платёж» — IP-валидация на стороне сервера
- Дубль-платежи невозможны — БД отвергает на уровне UNIQUE-constraint
- Бухгалтерия чистая: чеки 54-ФЗ автоматом, ИП/ООО на ЮKassa без боли
🛡
Защита от спама и перебора
Все «дорогие» эндпоинты (платежи, broadcast, регистрация клуба, инвайты)
защищены rate-limit'ом на уровне приложения. По умолчанию: 5 платежей/час
с одного аккаунта, 10 broadcast/мин, 5 регистраций клубов/день. Привязка к
Telegram-ID, иначе к IP. При превышении — автоматическая блокировка с
понятным сообщением.
Дополнительно — fail2ban на уровне сервера. Кто-то стучит подбором паролей
в SSH или другие порты — IP блокируется на час.
// что вы получаете
- DDoS / abuse не положат сервис — критичные эндпоинты защищены
- Скрипты-боты не могут штамповать клубы или промокоды
- Никакого «друга друга подключаем по одной ссылке 100 раз» — лимиты разумные