Что такое веб-хуки (webhooks) и для чего их используют?
В современном мире интернет-технологий ни одно приложение не может оптимально выполнять свои функции, если оно не связано с другими программами.
Платформы для онлайн-торговли должны взаимодействовать с платежными системами, платежные системы должны обмениваться данными с банковскими приложениями, а банковские приложения должны иметь доступ к данным о счетах клиентов.
Способность независимых программ общаться друг с другом и обмениваться данными — основы ценности многих онлайн-сервисов, а веб-хуки (webhooks) — это один из способов облегчить это общение.
Если вы хотите, чтобы одно бизнес-приложение, в котором вы зарегистрированы, самостоятельно отправляло оповещения другому приложению для автоматического выполнения полезных действий, то, возможно, вам стоит начать использовать именно веб-хуки.
Из этой статьи вы узнаете, что такое веб-хуки, как они работают, для чего они применяются и что можно сделать для их безопасного использования.
Что такое веб-хуки?
Веб-хуки (англ. Webhook, «интернет-крючок») — это HTTP-вызовы, инициируемые событием на сайте или в приложении. Другими словами, webhook — это запрос, отправляемый по указанному пользователем URL-адресу, когда определённое событие происходит на стороннем ресурсе.
Обычно триггером является какое-то событие, например, оставление комментария или регистрация нового пользователя. Когда происходит это событие, сайт совершает HTTP-запрос на URL-адрес, настроенный для веб-хука.
Веб-хуки представляют собой простой и гибкий способ автоматизации задач, которые в противном случае были бы повторяющимися и трудоёмкими. Их можно использовать для непрерывной интеграции между приложениями, отправки уведомлений или синхронизации данных.
Веб-хуки отправляют информацию в режиме, близком к реальному времени, а их использование не ограничивается задачами разработки — они могут использоваться для широкого спектра интеграций, например с социальными сетями, аналитическими приложениями или платформами для поддержки клиентов.
Как работают веб-хуки?
Веб-хук — это вызов по протоколу HTTP на установленный URL-адрес, который запускается событием на сайте или в приложении. Запрос веб-хука обычно содержит информацию о событии, которое его вызвало. Эта информация может быть использована для совершения немедленного действия на стороне сервера, принимающего уведомление, например, обновить базу данных или отправить новому пользователю письмо с подтверждением регистрации.
Для того, чтобы веб-хуки могли функционировать, они должны быть предусмотрены разработчиками приложения заранее. Так, например, разработчики банковского приложения закладывают в него возможность оповещения сервисов, которые подключены к нему, о списании средств с карт пользователей этих сервисов.
Рассмотрим, как это работает в деталях:
- Вы подписаны на стриминговый сервис. Владельцы стриминга хотят отправлять вам электронное письмо в начале каждого месяца, когда он снимает деньги с вашей кредитной карты.
- Стриминг согласовывает и создает веб-хук для сервера банковской службы (источник), чтобы при списании средств с кредитной карты (триггер мероприятия) отправлялось уведомление на службу электронной почты (назначение).
- Веб-хуки банковской системы будут включать информацию списании (данные о событии), которая будет использована скриптом службы электронной почты для создания подходящего сообщения для вас, клиента.
Нужно отметить, что именно от скрипта на сервере-получателе — небольшой программы, нацеленной на выполнение отдельных действий — зависит, что будет происходит дальше с данными из веб-хука — будут ли они заноситься в базу данных, запускать выполнение других скриптов или отправку уведомлений.
Поскольку веб-хуки подразумевают отправку в том числе конфиденциальной информации, важно принимать меры для обеспечения безопасности данных.
Как использовать веб-хуки безопасно?
Конечные точки назначения — URL-адреса, настроенные в системе для получения данных, отправленных обратным HTTP-вызовом — являются потенциальной мишенью для атаки для злоумышленников, поэтому крайне важно обеспечить их безопасность.
Один из способов — заменить реальные URL-адреса конечных точек на случайно сгенерированные с помощью специальных плагинов. Также можно использовать HTTPS для всех коммуникаций. Это гарантирует, что вся конфиденциальная информация, передаваемая с помощью веб-хука, будет зашифрована и её не получится перехватить. Ещё один способ — это проверка клиента перед обработкой любых запросов с помощью цифровой подписи.
Следующий важный для безопасности момент при настройке веб-хука — использование протокола сетевого времени (NTP). Использование NTP поможет предотвратить атаки повторного воспроизведения, когда злоумышленник перехватывает запрос веб-хука, а затем отправляет его повторно. Если время сервера и получателя не синхронизировано, злоумышленник потенциально может повторно отправить запрос до его обработки. Это приведёт к тому, что одно и то же событие будет обработано более одного раза.
Используя NTP, вы можете быть уверены, что часы на сервере и клиенте синхронизированы. Это предотвратит повторные атаки и гарантирует, что каждый запрос веб-хука будет обработан только один раз, что жизненно важно при обработке срочных данных.
Для чего нужны веб-хуки?
Прежде всего, веб-хуки необходимы для получения уведомлений о событиях. События определяются как любые действия, которые происходят на вашем веб-сайте или в приложении.
Некоторые примеры событий:
- Пользователь регистрирует учетную запись
- Пользователь добавляет товар в свою корзину
- Пользователь завершает покупку
Также можно настроить веб-хуки для автоматической публикации контента или обработки запросов пользователей с помощью чат-ботов.
Если у вас есть веб-приложение, которое позволяет пользователям вводить конфиденциальную информацию, вы можете использовать веб-хук для отправки этой информации в вашу внутреннюю базу данных для надежного хранения.
Веб-хуки могут пригодиться для настройки аутентификации. Когда вы используете аутентификацию, вы можете быть уверены, что только авторизованные пользователи могут получить доступ к данным.
Существует множество различных способов аутентификации, например, система токенов, которые генерируются для каждого пользователя, а затем включаются в запросы веб-хуков. Таким образом вы сможете убедиться, что пользователь уполномочен получить доступ к данным.
Еще один способ аутентификации с помощью веб-хуков — использование API-ключей, известных только пользователю и владельцу сайта. Ключи API будут использоваться для подписи каждого запроса. Это позволит проверить, что запрос поступил из надежного источника.
Заключение
Веб-хуки помогают администраторам онлайн-ресурсов узнавать о новых событиях или изменениях, которые происходят в системе. Их часто используют для настройки автоматических действий на сайте или передачи данных в другое приложение.
С помощью веб-хуков также можно уведомлять пользователей о новинках, изменении цены товара, новых сообщениях. Настроить веб-хук можно, если на сервере приложения предусмотрена такая возможность, при этом важно позаботиться о безопасности передачи данных.