⌨️ Про безопасность inline-кнопок.
- пригодится всем.
Inline-кнопками в ботах Телеграм называются кнопки, которые крепятся к сообщению снизу. Они могут выполнять разные функции: от перехода по ссылке до открытия Web App. Сегодня мы расскажем про их основное применение - выполнение действия в боте с помощью передачи
callback_data.
Работает это так: бот передает в кнопку строку до 64 символов (callback_data), далее пользователь нажимает на кнопку и на сервер бота приходит этот callback_data обратно, отталкиваясь от которого бот выполняет нужное действие.
Кажется, что схема довольно простая, но за ней скрывается одна незаметная уязвимость -
пользователи могут просматривать callback_data. Это легко сделать с помощью специальных клиентов или через
API и это открывает огромное пространство для уязвимостей когда в callback_data передается важная секретная информация.
🔐 Как от этого защититься? Мы рекомендуем 3 способа:
1. Тщательно проверять и фильтровать всю информацию, которая передается в callback_data. Не передавать туда никаких ключей, токенов и вообще никакой информации, которая поможет злоумышленнику разобраться во внутренностях бота.
2. Шифрование. Принцип простой: шифруем callback_data перед передачей пользователю и расшифровываем при получении обратно. Тут важно учесть чтобы зашифрованная строка вмещалась в 64 байта (ограничение Телеграм).
3. Передаем вместо callback_data случайную строку, для которой в базе бота сохраняем соответствующий callback_data. При получении этой случайной строки ищем в базе исходный callback_data и выполняем нужное действие. На наш взгляд, это
лучший вариант.
Остались вопросы? Или есть идея?
Обращайся -
@lvadislav,
@justdii