
Про тонкощі приватності в Telegram Bots API: «Це не порожнє, це фіча»
Тиждень тому в месенджері Telegram запустили Bots API - платформу для створення ботів. Платформа нехай трохи сировата, злегка милиця, але тим не менш цікава - як для користувачів, так і для розробників, які тут же кинулися писати (і портувати) різноманітних ботів. Але, як виявилося, в API є як мінімум одна особливість, яка може здатися досить несподіваною (і навіть неприємною) для кінцевих користувачів.
Відразу обмовлюся: дана замітка не є черговим нападком на захищеність Телеграма. Крім того, з огляду на дружні стосунки з деякими розробниками месенджера, писати статтю не дуже хотілося. Але застерегти тих, хто планує створювати і, головне, користуватися ботами в Telegram, мені здалося важливим. «Платон мені друг, але правда дорожча».
Спочатку коротко для пересічних користувачів. Якщо ви відправляєте якомусь боту в Телеграмі фотографію (розраховуючи, що бот потім цю фотографію відправить іншій людині), - пам'ятайте, що кінцевий одержувач фото (при бажанні) легко зможе дізнатися ваше ім'я/фото/юзернейм (і зможе зв'язатися з вами безпосередньо). Навіть якщо бот передбачає приватність і анонімність. Цей цікавий аспект вкрай неочевидний навіть для самих творців ботів. І вони (поки що!) нічого не можуть з цим зробити. Строго кажучи, це стосується не тільки фотографій (а майже всіх видів прикріплень), але побачити ваш профіль в інших випадках дещо складніше.
У тому числі цього піддається наведений як приклад в описі нової платформи @ HotOrBot. У цьому «аналозі Тиндера» можна легко підглядати акаунти тих, чиї фото вам пропонують оцінити (і, власне, писати їм - навіть якщо вони ще не відповіли вам взаємністю).
(як видно на ілюстраціях, достатньо відкрити фотографію, наприклад, у веб-версії Телеграма)
У створеному мною @ TalkBot (він дозволяє анонімно спілкуватися в «кімнатах» в дусі IRC або тет-а-тет, виступаючи в ролі посередника) та ж проблема: не шліть у кімнату-чатик фотографії, якщо не хочете бути деанонімізовані. Але мій бот хоча б попереджає всіх про це.
Технічне підґрунтя і чому цю проблему не можна вирішити без участі Телеграма. Зараз з відправленим боту файлом бот може зробити тільки одне: взяти його айдішник (file_id) і відправити комусь ще (це forward не самого повідомлення, а тільки вкладеної картинки/відео/аудіо/документа, в документації це виглядає просто як трюк для економії ресурсів). Отримати тіло файла в даний момент, на жаль, не можна (очевидно, це буде реалізовано найближчим часом, оскільки фіча архіважлива). В іншому випадку можна було б не використовувати той же file_id, а залити фото заново (хоч якийсь workaround був би). Зараз іншого рішення, крім як попереджати користувачів (або обмежувати функціональність зовсім), немає.
Чому це не було в платформі? Формально таку поведінку більш-менш задокументовано (конструктори InputMediaPhoto vs InputMediaUploadedPhoto, а також повернений об'єкт photo) у звичайному API, тому багом вважатися не може. І взагалі, боти створюються третіми сторонами - яка вже тут приватність. Враховуючи позиціонування Телеграма як месенджера, що робить упор на приватність, можливо, клієнтським додаткам варто більш явним чином давати зрозуміти, що всі дані, які відправляються ботам, повністю відкриті авторам ботів (якою б банальністю це не звучало).
Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.
Що (і кому) в даній ситуації варто робити?
58.94% Телеграму варто терміново виправити цю поведінку, розглядаючи її як вразливість 300
37.52% Телеграму варто сповіщати користувачів про погрози, пов'язані з відправкою повідомлень ботам 191
40.67% Телеграму варто сповіщати розробників ботів про «підводні камені» у своєму API 207
37.72% Розробникам ботів варто сповіщати користувачів про ризики при відправці повідомлень ботам 192
18.47% Розробникам ботів варто обмежити функціональність, яка може вводити користувачів в оману 94
46.37% Користувачам варто залишатися пильними самостійно і не відправляти приватну інформацію ботам 236
Проголосували 509 користувачів. Утрималися 260 користувачів.