![](https://habrastorage.org/getpro/habr/upload_files/280/686/d4f/280686d4fe202a9036548eee3624f8ad.png)
16 апреля 2022 Telegram презентовал новую фичу - Web apps, с помощью которой можно открывать веб страницы в боте без перехода в браузер. Подробнее можно почитать в источнике https://core.telegram.org/bots/webapps.
Однозначно это удобная функция для пользователей и для разработчиков. Но, так как это веб приложение, можно просмотреть что под капотом. Telegram привел в качестве примера бота @DurgerKingBot, его и разберем.
Открываем telegram web, находим бота, запускаем его.
![](https://habrastorage.org/getpro/habr/upload_files/9c4/f0e/422/9c4f0e4228ecb5a74ce0395eb5fa5d45.jpg)
Нажимаем Order Food, откроется веб приложение
![](https://habrastorage.org/getpro/habr/upload_files/717/842/52e/71784252e43c03a57bdfb654361cf926.jpg)
Здесь видим адрес сайта. Открываются двери для DDoS, брутфорса. Если вы используете webhook, то ссылка на него должна быть сложной (например ключ бота, как предлагает Telegram), никаких tg, telegram, tgwebhook и т.п.
Можно узнать, какие домены на этом же ip. Например через 2ip.ru, и если есть боты, которых вы не хотите афишировать, держите их на другом ip. Так же не желательно держать код бота с веб приложением на shared хостинге, так как есть вероятность встретить нежданного "соседа", либо выбирайте надежный shared хостинг
Находим js, изучаем его
![](https://habrastorage.org/getpro/habr/upload_files/f11/fd1/5ca/f11fd15cad3caf482675a09eb57034c4.jpg)
Ищем нужные методы, например событие создания заказа
![](https://habrastorage.org/getpro/habr/upload_files/1cc/e72/5b4/1cce725b474b526557a422e48fc2fd25.jpg)
и можем отправлять свои данные
![](https://habrastorage.org/getpro/habr/upload_files/243/b49/b00/243b49b00e13973d205541bab2dbbf07.jpg)
Поэтому в ajax надо
передавать нужно только те данные, которые ввел пользователь. Цены, склады и прочее подставляйте в бэке. Если количество должно быть целым числом, то проверяйте, иначе бот пропустит 0.1 и выдаст счет на этот товар по 0.1 цене и доказывай потом, что это не глюк бота.
на стороне сервера проверять на SQL инъекции, XSS, препарируйте входящие данные