О тонкостях приватности в Telegram Bots API: «это не баг, это фича»

imageНеделю назад в мессенджере Telegram был запущен Bots API — платформа для создания ботов. Платформа пусть немного сыроватая, слегка костыльная, но тем не менее интересная — как для пользователей, так и для разработчиков, которые тут же ринулись писать (и портировать) разнообразных ботов. Но, как оказалось, в API есть как минимум одна особенность, которая может показаться довольно неожиданной (и даже неприятной) для конечных пользователей.

Сразу оговорюсь: данная заметка не является очередным нападком на защищенность Телеграма. Более того, учитывая дружеские отношения с некоторыми из разработчиков мессенджера, писать статью не особенно хотелось. Но предостеречь тех, кто планирует создавать и, главное, пользоваться ботами в Telegram, мне показалось важным. «Платон мне друг, но истина дороже».

Сначала вкратце для рядовых пользователей. Если вы отправляете какому-то боту в Телеграме фотографию (рассчитывая, что бот потом эту фотографию отправит другому человеку), — помните, что конечный получатель фото (при желании) легко сможет узнать ваше имя/фото/юзернейм (и сможет связаться с вами напрямую). Даже если бот предполагает приватность и анонимность. Этот интересный аспект крайне неочевиден даже для самих создателей ботов. И они (пока что!) ничего не могут с этим сделать. Строго говоря, это касается не только фотографий (а почти всех видов прикреплений), но увидеть ваш профиль в других случаях несколько сложнее.

В том числе этому подвержен приведенный в качестве примера в описании новой платформы @HotOrBot. В этом «аналоге Тиндера» можно легко подсматривать аккаунты тех, чьи фото вам предлагают оценить (и, собственно, писать им — даже если они ещё не ответили вам взаимностью).
1b77546c4c00469bab4de98b3748260f.pnge0d5f495562041e0821eb5089cdb603b.jpgede364b2a029493f9ab54d970e65e04a.jpg
(как видно на иллюстрациях, достаточно открыть фотографию, например, в веб-версии Телеграма)

В созданном мною @TalkBot (он позволяет анонимно общаться в «комнатах» в духе IRC или тет-а-тет, выступая в роли посредника) та же проблема: не шлите в комнату-чатик фотографии, если не хотите быть деанонимизированы. Но мой бот хотя бы предупреждает всех об этом.
113fcff9f40140ada3cde0b87d83f0be.png

Техническая подоплека и почему эту проблему нельзя решить без участия Телеграма. Сейчас с отправленным боту файлом бот может сделать только одно: взять его айдишник (file_id) и отправить кому-то ещё (это forward не самого сообщения, а только вложенной картинки/видео/аудио/документа, в документации это выглядит просто как трюк для экономии ресурсов). Получить тело файла в данный момент, к сожалению, нельзя (очевидно, это будет реализовано в ближайшее время, поскольку фича архиважная). В противном случае можно было бы не использовать тот же file_id, а залить фото заново (хоть какой-то workaround был бы). Сейчас иного решения, кроме как предупреждать пользователей (или ограничивать функциональность вовсе), нет.

Почему это не баг в платформе? Формально такое поведение более-менее задокументировано (конструкторы InputMediaPhoto vs InputMediaUploadedPhoto, а также возвращаемый объект photo) в обычном API, поэтому багом считаться не может. И вообще, боты создаются третьими сторонами — какая уж тут приватность. Учитывая позиционирование Телеграма как мессенджера, делающего упор на приватность, возможно, клиентским приложениям стоит более явным образом давать понять, что все отправляемые ботам данные полностью открыты авторам ботов (какой бы банальностью это не звучало).

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

© Habrahabr.ru