Новости / 24.10.2026
Защита Telegram-бота и мини-аппа от DDoS
Где у бота и мини-приложения слабые места, почему вебхук нельзя пускать через проверку браузера и как спрятать адрес сервера. С настройками по шагам.

Сам бот атаку получает редко: сообщения пользователей приходят к нему через серверы Telegram, и флудить их бесполезно. Уязвимы три другие вещи: вебхук, мини-приложение с его API и адрес сервера. Разберём каждую и покажем, что закрыть в первую очередь.
Где у бота слабые места
- Вебхук. Адрес, на который Telegram присылает обновления. Если его узнать, на него можно слать тысячи POST-запросов в секунду, и бот перестанет отвечать, хотя у самого Telegram всё в порядке.
- Мини-апп и его API. Фронтенд и бэкенд мини-приложения работают как обычный сайт. Скрипт может долбить авторизацию, баланс или каталог, и приложение перестанет грузиться у всех.
- IP сервера. Если адрес известен, атака идёт напрямую на сервер, мимо любой защиты по домену.
Long polling или вебхук
При long polling бот сам ходит в api.telegram.org за обновлениями через getUpdates. Входящих соединений у него нет, поэтому сервер можно закрыть файрволом от всех, кроме SSH с вашего адреса. Атаковать там нечего.
Вебхук удобнее под нагрузкой, но открывает порт наружу. Если бот на вебхуке, его нужно закрывать отдельно.
Как закрыть вебхук
- Задайте
secret_tokenвsetWebhook. Telegram будет присылать его в заголовкеX-Telegram-Bot-Api-Secret-Token, а бот должен отбрасывать запросы без него. Это защищает от поддельных обновлений, но не от флуда: проверка всё равно тратит ресурсы сервера. - Сделайте путь неугадываемым, например
/webhook/и длинная случайная строка. Тогда его не найти перебором. - Принимайте вебхук только из сетей Telegram:
149.154.160.0/20и91.108.4.0/22. Этот список Telegram публикует в документации Bot API. - Если домен за защитой TurtleGuard, добавьте правило «Пропустить» для пути вебхука и метода POST и разрешите его только сетям Telegram по IP. Проверку браузера серверы Telegram не пройдут, поэтому без такого правила обновления перестанут доходить.
Как защитить мини-апп
- Проверяйте initData на сервере. Telegram подписывает данные запуска ключом от токена бота (HMAC-SHA256). Без проверки подписи любой может слать запросы от имени любого пользователя.
- Ставьте лимиты на API. Живой пользователь редко делает больше нескольких запросов в секунду. Ограничение на адрес отсекает скрипты и не мешает людям.
- Кешируйте тяжёлое. Каталог, тарифы и другие общие для всех данные можно отдавать из кеша, чтобы флуд по ним не доходил до базы.
- Подключите домен мини-аппа через защиту. Проверка браузера TurtleGuard работает во встроенном браузере Telegram, а данные запуска в адресе (
#tgWebAppData) после проверки сохраняются. Приложение получает их как обычно.
Как спрятать адрес сервера
- Разрешите входящие на 80 и 443 только с адресов узлов защиты. Иначе атакующий узнает IP и пойдёт в обход.
- Не держите на этом же сервере сайты и сервисы без защиты, не отправляйте с него почту: адрес утекает через заголовки писем и DNS-записи поддоменов. Подробнее в статье «Как скрыть IP-адрес сервера».
- Если адрес уже засветился, проще сменить IP, чем прятать старый.
Вебхуки платёжных систем
ЮKassa, CryptoBot, Platega и другие шлют уведомления об оплате со своих адресов. Им нужно то же самое: правило «Пропустить» для пути колбэка, только метод POST, и обязательная проверка подписи на сервере. Иначе пользователь оплатит, а бот об этом не узнает.
С чего начать
- Если бот на вебхуке, задайте
secret_tokenи ограничьте путь сетями Telegram. - Вынесите мини-апп на отдельный поддомен, например
app.example.com, и подключите его к защите одной записью CNAME. - Добавьте правила «Пропустить» для вебхуков бота и платёжек.
- Закройте сервер от прямых подключений.
Как это настроить у нас и сколько стоит, описано на странице «Защита Telegram мини-аппа и бота».