Практика
Безопасность Telegram-бота: токены и данные
Безопасность Telegram-бота для бизнеса: где хранить токен, как защитить вебхук и права, какие данные клиентов собирать и что требует закон 99-З. Чек-лист.
Коротко. Безопасность Telegram-бота для бизнеса держится на трёх вещах. Первая — токен: кто его знает, тот управляет ботом, поэтому токен хранится только на сервере, не попадает в код, переписку и журналы, а при подозрении на утечку перевыпускается через @BotFather. Вторая — сервер: вебхук только по HTTPS с проверкой секретного заголовка, проверка прав пользователя по его числовому идентификатору, лимиты и своевременные обновления. Третья — данные клиентов: собирать минимум, хранить у себя с ограниченным сроком, иметь политику обработки персональных данных, основание обработки и меры защиты по закону № 99-З. Для AI-ботов добавляются защита базы знаний и ограничение действий модели.
Статья для владельца бизнеса, маркетолога или разработчика, который запускает или уже использует Telegram-бота для заявок, записи, поддержки клиентов или AI-консультаций.
Из чего состоит бот и где у него слабые места
Сам Telegram — канал доставки. Бот — это ваша программа на вашем сервере, которая получает обновления через Telegram Bot API и отвечает от имени бота. Всё, что находится за пределами мессенджера, — зона ответственности компании.
| Компонент | Главный риск | Как закрыть |
|---|---|---|
| Токен бота | Посторонний отправляет сообщения от имени бота и получает входящие обновления | Хранилище секретов, отдельные токены для теста и боевого бота, перевыпуск при подозрении |
| Аккаунт владельца бота | Захват Telegram-аккаунта сотрудника или фрилансера, который создал бота | Корпоративный аккаунт, облачный пароль, доступ у двух ответственных |
| Вебхук и сервер | Поддельные обновления, открытые служебные адреса, устаревшее ПО | HTTPS, секретный токен вебхука, закрытая админка, обновления |
| База данных и журналы | Утечка контактов и переписки клиентов | Минимум данных, шифрование, сроки хранения, журналы без персональных данных |
| Административные команды | Любой пользователь вызывает команды менеджера | Проверка идентификатора пользователя на сервере по списку |
| Интеграции: CRM, 1С, AI-модель | Бот получает больше прав, чем нужно для сценария | Отдельные ключи с минимальными правами, лимиты |
Токен бота: главный ключ
Токен выдаёт @BotFather при создании бота. Он даёт полный доступ к Bot API: отправлять сообщения пользователям, которые писали боту, получать новые входящие сообщения, менять вебхук, описание и команды. Второго фактора у токена нет — это единственный ключ.
Где токены утекают
- в исходном коде, опубликованном в открытом репозитории, в том числе в истории старых коммитов;
- в переписке с подрядчиком, в общих документах, задачах и тикетах;
- в журналах сервера и системах сбора ошибок, если записывается полный адрес запроса к Bot API;
- в ссылках на файлы: адрес скачивания файла через Bot API содержит токен, поэтому такие ссылки нельзя отдавать пользователям или вставлять на сайт — файлы нужно отдавать через свой сервер;
- в клиентском коде, если мини-приложение или страница сайта обращаются к Bot API напрямую из браузера.
Как хранить и перевыпускать токен
- Токен — в переменных окружения или в хранилище секретов, не в репозитории; файл с настройками исключён из системы контроля версий.
- Для тестов — отдельный бот с отдельным токеном; разработчики не работают с боевым ботом.
- Доступ к токену — у минимального круга людей; при уходе подрядчика или сотрудника токен перевыпускается.
- Перевыпуск — через @BotFather, после чего старый токен перестаёт работать. Отработайте процедуру заранее и засеките, сколько минут занимает замена на сервере.
- Бот создаётся с корпоративного Telegram-аккаунта, а не с личного номера фрилансера. На аккаунте включён облачный пароль — двухэтапная проверка. Если аккаунт уже захвачен, действуйте по инструкции «Взломали Telegram или почту сотрудника».
Вебхук, сервер и права пользователей
- Только HTTPS. Telegram доставляет обновления на вебхук только по HTTPS, поэтому следите за сроком действия сертификата.
- Секретный токен вебхука. При установке вебхука задаётся параметр secret_token, и Telegram передаёт это значение в заголовке X-Telegram-Bot-Api-Secret-Token каждого запроса. Сервер отклоняет запросы без правильного значения — поддельные обновления не пройдут.
- Закрытые служебные адреса. Админка бота и технические эндпоинты не доступны из интернета без авторизации.
- Административные команды проверяются по числовому идентификатору пользователя из списка на сервере. Username для этого не подходит: его можно сменить, а освободившееся имя может занять другой человек.
- Мини-приложения и вход через Telegram. Данные пользователя, пришедшие из клиента, сервер проверяет по подписи так, как описано в документации Telegram. Без проверки их можно подделать.
- Группы. Боту выдаются минимальные права администратора, режим приватности остаётся включённым, если боту не нужно читать все сообщения чата.
- Лимиты и валидация. Ограничение частоты команд от одного пользователя, проверка всех входных данных и файлов — как в любом API; подробнее — в статье о безопасности API.
- Сервер. Обновления ОС и библиотек, отдельная учётная запись для процесса бота, резервные копии базы.
Данные клиентов и закон 99-З
Бот, который собирает имя, телефон, переписку или файлы клиентов, обрабатывает персональные данные. Для компании в Беларуси это означает требования Закона Республики Беларусь от 07.05.2021 № 99-З «О защите персональных данных»:
- Политика обработки персональных данных — ссылка на неё в приветственном сообщении бота.
- Основание обработки — как правило, согласие, которое получают до сбора данных: кнопка с текстом согласия и ссылкой на политику, факт согласия сохраняется в базе.
- Ответственное лицо — юридические лица назначают ответственного за обработку персональных данных.
- Меры защиты по ст. 17 закона — контроль доступа, защита токена и базы, журналы действий.
- Уведомление НЦЗПД о нарушениях — если данные клиентов утекли.
Практические правила минимизации:
- не собирайте через бота паспортные данные, номера карт и медицинские сведения, если без этого можно обойтись; платежи — через платёжного провайдера;
- телефон запрашивайте штатной кнопкой «Поделиться контактом», а не свободным текстом;
- контакты и переписку храните в своей базе с ограниченным сроком, а не только в истории чата;
- журналы сервера не должны содержать тексты сообщений и телефоны.
Серверы Telegram находятся за пределами Беларуси, поэтому использование мессенджера как канала может затрагивать вопрос трансграничной передачи персональных данных. Что это означает для облаков, CRM и мессенджеров — в статье о трансграничной передаче персональных данных.
AI-бот в Telegram: дополнительные риски
AI-ассистент отвечает на основе базы знаний и языковой модели, и у него появляются новые классы рисков:
- Манипуляция запросами (prompt injection). Пользователь пытается заставить бота раскрыть инструкции, содержимое базы знаний или выйти за рамки сценария. Защита — разделение системных инструкций и пользовательских данных, проверка ответов перед отправкой, отсутствие секретов в инструкциях модели.
- Утечка базы знаний. В неё не загружают внутренние документы, которые нельзя показать клиенту.
- Лишние действия. Модель не получает прямой доступ на запись в базу или CRM; каждое действие идёт через ограниченный API с правами конкретного пользователя и подтверждением.
- Передача данных провайдеру модели — ещё один получатель персональных данных, которого нужно учесть в политике.
- Расходы. Лимиты запросов на пользователя, иначе за злоупотребления платит бизнес.
Карта рисков — OWASP Top 10 for LLM Applications. Как защищать корпоративных ассистентов и агентов целиком — в статье о внедрении AI без утечек.
Чек-лист безопасности Telegram-бота для бизнеса
- Бот создан с корпоративного Telegram-аккаунта с облачным паролем; доступ к аккаунту есть у двух ответственных.
- Токен хранится в переменных окружения или хранилище секретов, его нет в репозитории и переписке.
- Для тестов используется отдельный бот с отдельным токеном.
- Процедура перевыпуска токена описана и проверена.
- Вебхук работает по HTTPS и проверяет секретный заголовок.
- Административные команды доступны только пользователям из списка идентификаторов.
- Ссылки на файлы, содержащие токен, не передаются пользователям.
- Бот собирает минимум данных, телефон — через кнопку контакта.
- В приветствии есть ссылка на политику обработки персональных данных, основание обработки зафиксировано.
- Журналы не содержат текстов сообщений и контактов, у данных есть срок хранения.
- Для AI-бота: секретов нет в инструкциях модели, база знаний проверена, действия модели ограничены.
- Сервер и библиотеки обновляются, база резервируется.
Как это делает Viviar
Мы разрабатываем ботов и AI-ассистентов в направлении разработки и закладываем эти требования с первого дня — сначала на собственных цифровых сотрудниках Viviar Agents. «AI-Ассистент под ключ» — один канал (Telegram или виджет на сайте), один источник данных и 3 месяца поддержки — от 11 600 BYN; 2–3 канала — от 23 200 BYN. Если бот работает с чувствительными данными, подойдёт «Пакет безопасного AI» от 20 300 BYN + от 8 700 BYN в месяц: защита данных и модели и сопровождение. Все пакеты — на странице цен.
Частые вопросы
Что будет, если токен Telegram-бота утёк?
Посторонний получит полный доступ к боту через Bot API: сможет отправлять сообщения от его имени пользователям, которые писали боту, получать новые входящие сообщения и менять настройки. Нужно сразу перевыпустить токен через @BotFather, обновить его на сервере, проверить настройки вебхука и журналы и выяснить, где произошла утечка.
Шифруются ли сообщения в Telegram-боте?
Переписка с ботом идёт в обычном облачном чате: трафик между приложением и серверами Telegram шифруется, но сквозного шифрования, как в секретных чатах, для ботов нет. Сообщения доступны серверу бота и хранятся в инфраструктуре Telegram. Поэтому через бота не стоит собирать данные банковских карт, пароли и другие особо чувствительные сведения.
Нужно ли согласие пользователя, чтобы бот собирал телефон?
Телефон вместе с именем — персональные данные, и на их обработку по закону № 99-З нужно основание, чаще всего согласие. Практичный вариант — перед сбором показать кнопку согласия со ссылкой на политику обработки персональных данных и сохранить факт согласия в базе. Точный порядок для вашего сценария лучше согласовать с юристом.
Можно ли доверить создание бота фрилансеру?
Можно, если заранее закрепить правила: бот создаётся на корпоративном Telegram-аккаунте, токен хранится в инфраструктуре компании, у заказчика есть доступ к коду и серверу. После завершения работ доступы подрядчика отключаются, а токен перевыпускается. Без этого бизнес зависит от одного человека и не контролирует данные своих клиентов.
Сколько стоит безопасный Telegram-бот для бизнеса?
Зависит от сценария, числа каналов и источников данных. У Viviar «AI-Ассистент под ключ» с одним каналом Telegram или виджетом, одним источником данных и тремя месяцами поддержки стоит от 11 600 BYN, 2–3 канала — от 23 200 BYN. Защиту токена, вебхука и данных клиентов мы закладываем в проект с самого начала.
Вывод
Безопасность Telegram-бота для бизнеса начинается с токена и корпоративного аккаунта, продолжается защитой вебхука и прав пользователей и заканчивается дисциплиной с персональными данными: минимум сбора, политика, основание обработки и меры защиты по закону № 99-З. Для AI-ботов добавьте защиту базы знаний и ограничение действий модели. Если планируете бота или хотите проверить уже работающего, напишите нам: ответим за 2 рабочих дня, за полчаса разговора разберём сценарий.
Источники: Telegram Bot API, Bots: An introduction for developers, Telegram Mini Apps (core.telegram.org); Telegram FAQ (telegram.org); OWASP Top 10 for Large Language Model Applications, OWASP Secrets Management Cheat Sheet (owasp.org); Закон Республики Беларусь от 07.05.2021 № 99-З «О защите персональных данных» (pravo.by); Национальный центр защиты персональных данных (cpd.by).