Telegram Web Apps часто используют для авторизации, оплаты, анкет и мини-сервисов внутри мессенджера. Один из самых частых запросов у разработчиков и владельцев ботов — какие данные можно брать у клиента безопасно, а каким данным нельзя доверять без проверки.
Короткий ответ: доверять “на слово” браузеру или Web App нельзя. Безопасными считаются только те данные, которые пришли от Telegram и были проверены на сервере.
Что можно получать от клиента через Telegram Web Apps
Web App может передать:
- данные пользователя из
initData - тему оформления, цветовую схему, язык интерфейса
- информацию о платформе
- данные формы, которые вводит сам пользователь
- события интерфейса: нажатия, выборы, отправку данных через
sendData()
Но важно: получить можно многое, безопасно использовать — не всё.
Какие данные считаются надежными
Самый важный источник — initData. В нем могут быть:
user.idfirst_namelast_nameusernamelanguage_codechat_typechat_instanceauth_datequery_id
Эти данные можно использовать только после серверной проверки подписи (hash). Если подпись валидна, это значит, что данные действительно сформированы Telegram, а не подменены на клиенте.
Каким данным нельзя доверять без проверки
Небезопасно полагаться на:
- любые значения из JavaScript на странице
- поля форм без валидации
- параметры URL
- данные из
localStorage,sessionStorage, cookies - любые client-side флаги вроде “оплачен”, “админ”, “premium”
Клиент можно изменить, подделать или перехватить. Поэтому роль пользователя, доступы, скидки, статусы заказов и результаты оплаты должны определяться только сервером.
Что обязательно проверять на сервере
- ✅
initDatasignature - ✅ актуальность
auth_date - ✅ соответствие
user.idвашей бизнес-логике - ✅ права доступа в базе, а не в интерфейсе
- ✅ данные оплаты — только по подтверждению от платежной системы или Telegram
Что безопасно использовать без критических рисков
Без строгой проверки можно применять данные, которые не влияют на безопасность:
- тему интерфейса
- размер окна
- платформу
- язык для локализации
- UX-настройки
Если пользователь подменит тему или язык, это не даст ему лишних прав.
Главное правило
Telegram Web App — это удобный интерфейс, а не доверенная среда.
Безопасная схема такая:
- Web App получает
initData - отправляет его на ваш сервер
- сервер проверяет подпись
- только после этого создает сессию, выдает данные и разрешения
Именно так отвечают на популярные запросы вроде:
“как проверить telegram web app initData”,
“можно ли доверять данным из telegram web app”,
“какие данные telegram mini app безопасны”.
📌 Если строите Mini App, запомните простое правило: всё, что влияет на деньги, доступы и идентификацию, подтверждается только на сервере.
Посмотрите подборку Телеграм-каналов.