Как проверить, открыт ли URL-адрес бота в Telegram только в браузере приложения - PullRequest
0 голосов
/ 23 октября 2018

Я новичок в ботах telegram и нашел его отличные возможности для дальнейшего развития моего проекта, и теперь знаю, что могу послать кнопку ссылки пользователю бота, чтобы при нажатии целевой URL-адрес открывался в телеграмме в приложенииbrowser.

У меня вопрос: как проверить на сервере, открыт ли этот URL-адрес внутри телеграммы только в веб-приложении, а не в другом браузере, скопировав URL-адрес и вставив его, например, в Chrome?

Мне нужно проверить, что если URL-адрес скопирован и вставлен в другой браузер, перенаправьте пользователя на страницу сообщения и не открывайте целевую страницу.Я хочу, чтобы мой пользователь открывал URL с помощью телеграммы только в браузере приложений и нигде больше.И эта телеграмма должна быть той, которая получила ссылку бота, а не другой телеграммой другого пользователя.

Поэтому проверка и управление агентом пользователя, отправленным на сервер, не решит мою проблему, поскольку это может быть другая телеграммадругого пользователя или даже поддельного настольного браузера, поэтому не стоит полагаться на это с точки зрения безопасности.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 23 октября 2018

Вопросы

Я хочу, чтобы мой пользователь открывал URL, используя телеграмму только в браузере приложений, и нигде больше

Telegram bot API делаетне предоставлять никаких механизмов для этого на стороне клиента.

... как проверить на сервере, открыт ли этот URL-адрес внутри телеграммы только в веб-приложении, а не в другом браузере, скопировав URL-адрес и вставив его, например, в Chrome?

Вы также не можете обнаружить «недопустимое» использование браузера на стороне сервера, потому что вам понадобится какой-нибудь механизм аутентификации, чтобы гарантировать, что у конкретного пользователя есть разрешения на чтение определенной страницы.Сервер не получает какие-либо файлы cookie, специфичные для вашей службы, и, конечно, он не получает никакой информации о сеансе Telegram и связанных с ним материалах Telegram API.

И, конечно, вы не можете полагаться на заголовок User-Agentпотому что его можно легко указать вручную в таких утилитах, как curl.


Временные решения

Есть несколько возможных решений, но нет простого.

  • Напишите свой собственный клиент Telegram, используя Telegram API .Это трудный путь, но в этом случае вы можете получить полный контроль над всем, что ваш клиент отправляет на сервер - поэтому вы должны иметь возможность решить проблему с разрешениями.

  • Если вы хотитечтобы показать пользователю некоторую конфиденциальную информацию - подумайте о том, чтобы представить ее с помощью встроенных функций бота Telegram.Этого гораздо проще достичь, но это сильно зависит от потребностей вашего продукта и может оказаться невозможным.

  • Переключитесь на одноразовые URL-адреса.Вставьте хеш в URL и убедитесь, что ваш сервер показывает определенную страницу ровно один раз.Если пользователь хочет снова прочитать страницу, бот генерирует URL с другим хешем.Это самое простое решение, но, конечно, вы не можете быть на 100% уверены, что пользователь не скопирует и не вставит URL-адрес перед просмотром страницы в веб-просмотре телеграммы.

...