Коротко
Удалите ключ немедленно. Не обсуждайте и не надейтесь, что «его наверняка никто не увидел»: удаление — один клик, а замена займёт ещё минуту. Порядок: удалить ключ → создать новый → заменить в интеграции → проверить последние счета и возвраты. Увести ваши деньги ключом нельзя — оплата уходит прямо на ваш счёт Kaspi, перенаправить её невозможно. Но навредить можно, поэтому не тяните.
Первые пять минут
- Удалите ключ. Кабинет → Интеграции → раздел ключей → удалить. Он перестаёт работать сразу.
- Создайте новый ключ. Выдайте только нужные права. Если старый был привязан к кассиру, привяжите и новый к тому же кассиру.
- Замените его в интеграции. Во всех местах:
.envна сервере, плагин CMS, сценарии n8n, прослойка CRM. Полный список: Удалил API-ключ. - Просмотрите последние счета. В разделе Счета проверьте, нет ли подозрительных записей: счетов, которых вы не выставляли, странных сумм, чужих описаний.
- Просмотрите возвраты. Это самое важное: нет ли возвратов, которых вы не делали?
- Если подозрение серьёзное — временно отключите кассира. Разорвав привязку в разделе Kaspi, вы останавливаете и создание счетов, и возвраты. После проверки подключите обратно.
Что можно сделать ключом
Это стоит понимать точно — чтобы не паниковать зря и не недооценить риск.
| Можно | Нельзя |
|---|---|
| Выставлять счета от вашего имени | Перевести деньги на чужой счёт |
| Читать список и данные ваших счетов | Зайти в ваш счёт Kaspi |
| Делать возвраты (если есть право) | Менять настройки вашего аккаунта Kaspi |
| Отменять счета | Войти в кабинет |
| Создавать и менять подписки (если есть право) | Изменить привязку кассира |
| Сменить адрес webhook (если есть право) | Сменить или оплатить тариф |
Украсть деньги нельзя. Оплата всегда приходит на ваш счёт Kaspi, и направление платежа ключом не меняется.
Но реальный вред возможен. Например: выставить от вашего имени поддельные счета и запутать покупателей; вернуть оплаченные счета и тем самым уменьшить остаток на вашем счёте Kaspi; сменить адрес webhook и увести уведомления об оплатах на сторону; прочитать список счетов и увидеть данные ваших клиентов; выжечь месячный лимит тарифа пустыми счетами.
Так что «деньги украсть не смогут» — не повод сидеть спокойно.
Откуда обычно утекает ключ
| Как это происходит | Что делать |
|---|---|
| Попал в репозиторий | Удалите ключ. Удалить коммит мало — он остаётся в истории |
| Написан в чате или в трекере задач | Удалите ключ и сообщение |
| Лежит в коде, который выполняется в браузере | Удалите ключ и проводите запросы через свой сервер |
| Зашит в мобильное приложение (APK/IPA) | Удалите ключ. Разобрать приложение несложно |
| Попал на скриншот или в запись экрана | Удалите ключ |
| Остался у бывшего сотрудника | Удалите ключ и создайте новый |
| Пишется в логи | Удалите ключ и уберите его из логов |
Правило одно: не пытайтесь доказать, видел ключ кто-то или нет — просто удалите. Удаление бесплатно, расследование долгое.
Как искать подозрительные действия
- Отфильтруйте список счетов по периоду — от момента утечки до сегодня.
- Сверьте с собственными номерами заказов. Записи с
externalOrderId, которых нет в вашей системе, или вовсе без него — подозрительны. - Отдельно просмотрите возвраты и сверьте каждый со своим журналом.
- Проверьте адрес webhook. Кабинет → Интеграции: тот ли адрес, не добавился ли лишний.
- Посмотрите список подписок — нет ли созданных не вами.
Если нашли непонятные действия, напишите в поддержку со скриншотами: WhatsApp +7 778 881 3333, Telegram @qutpaybot или email kazprose@gmail.com. Сам ключ никогда не присылайте — достаточно первых нескольких символов.
Чтобы это не повторилось
- Ключ живёт только на сервере. Ни в коде для браузера, ни в мобильном приложении, ни в десктопной программе.
- Хранится в
.envили в хранилище секретов. Не внутри кода. .envдолжен быть в.gitignore. Перед коммитом смотрите, что именно отправляете.- Для мобильного приложения схема такая: приложение → ваш сервер → Qut Pay. Приложение не должно обращаться к нам напрямую.
- Отдельный ключ на каждую интеграцию. Утёк один — удалили только его, остальное продолжает работать.
- Минимум прав. Интеграции, которая только читает, не нужен
invoices:write; той, что не делает возвратов, не нуженrefunds:write. - Меняйте ключи регулярно — особенно при смене сотрудников.
- Не пишите ключ в логи. При логировании запросов вырезайте заголовки.
Как устроен сервис и какие права есть у роли кассира: Безопасно ли подключать.
Вопросы и ответы
Если я удалю ключ, текущие платежи прервутся? Нет. Открытые счета и ссылки на оплату продолжают работать, останавливаются только новые запросы с этим ключом.
Можно «приостановить» ключ, не удаляя? При подозрении правильнее удалить. Новый создаётся за минуту, а удалённым ключом уже никто ничего не сделает.
Смогу ли я узнать, кто им пользовался? Сами действия вы увидите в списках счетов и возвратов в кабинете. Если нашли непонятную запись, напишите в поддержку, указав время.
Ключ лежал в репозитории полгода, вроде ничего не случилось. Удалять? Да. «Ничего не случилось» — это пока.
При создании нового ключа нужно ли менять и секрет webhook? Секрет webhook — отдельная вещь. Но если он был опубликован там же, замените и его.