API и автоматизация

Подпись webhook: как проверить отправителя и сохранить исходное тело

Как проверить отправителя webhook, сохранить исходное тело и обработать повтор, не меняя заказ по неподтверждённому запросу.

Сервис прислал событие, и заказ стал оплаченным. Но адрес обработчика доступен из интернета. Если приложение доверяет любому JSON с номером заказа, похожий запрос способен отправить посторонний человек. До изменения данных нужно проверить механизм подтверждения, предусмотренный конкретным провайдером.

Найдите правила своего подключения

Экран ноутбука с программным кодом

У webhook нет общей подписи на все платформы. Один сервис подписывает тело, другой передаёт согласованный секрет, третий требует дополнительной проверки операции. Настройка из чужого примера может выглядеть убедительно и совершенно не подходить вашему сервису.

Stripe использует подпись и требует исходное тело для её проверки. В Telegram можно задать secret_token для заголовка webhook. Это разные механизмы. Не переносите название заголовка и алгоритм из одного подключения в другое без проверки документации.

Получите тело до преобразования

Если проверка зависит от байтов, сначала получите оригинальные данные. Повторная сборка JSON может поменять пробелы, порядок полей и представление символов. Смысл останется тем же, а проверка перестанет сходиться. Уточните, не изменяет ли тело фреймворк или промежуточный обработчик.

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

Сверьте окружение и секрет

Тестовый ключ не обязан подходить рабочему endpoint. У нескольких получателей одного аккаунта тоже могут быть разные настройки. При ошибке сравните адрес, режим и источник секрета. Отключение проверки ради быстрого запуска оставит бизнес-операцию доступной неподтверждённым запросам.

ПроверкаВозможная причина отказа
Режим сервисаПерепутано тестовое и рабочее подключение
Конечный адресИспользован секрет другого endpoint
ЗаголовокПрокси или обработчик его не передал
ТелоДанные преобразованы до проверки

Разделите доверие и выполнение

Подтверждённое событие ещё нужно правильно обработать. Сверьте его тип, связанный объект и допустимость перехода. Повтор не должен второй раз выдавать доступ или создавать документ. Храните идентификатор события вместе с результатом обработки.

Для поздних событий тоже требуется правило. Если сотрудник уже отменил заказ, старый статус не должен бесконтрольно возвращать его в работу. Проверяйте актуальные сведения и согласованные переходы, а не только текст входящего поля.

Проверьте отказ и повтор

Отправьте допустимое тестовое событие, затем запрос с изменённым телом, отсутствующим заголовком и неверным секретом. Отклонённые запросы не должны менять данные. Повторите настоящий идентификатор дважды и посмотрите состояние заказа, а не только ответ HTTP.

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

В QuickLanding можем проверить существующий endpoint и подключить события с журналом и защитой от повторов. Для оценки нужны сервис, типы событий и обезличенный пример запроса. Приёмку строим вокруг подтверждённых изменений в приложении, которые ваша команда ожидает от каждого события.

Документация и проверка сведений

Технические сведения сверены с документацией 8 октября 2026 года. Для конкретного подключения проверьте версию сервиса и доступные в вашем окружении возможности.

Материалы по соседним задачам

ЕЩЁ НЕСКОЛЬКО ВОПРОСОВ

Коротко о важном

HTTPS достаточно для доверия к webhook?

Он защищает транспорт, но открытый адрес доступен другим отправителям. Используйте механизм провайдера для проверки происхождения запроса и отдельно проверяйте содержимое операции.

Можно пересобрать JSON перед проверкой?

Для механизмов, зависящих от исходного тела, нужна оригинальная последовательность байтов. Проверьте порядок обработки в своём фреймворке и рекомендованные средства сервиса.

Верная подпись исключает дубли?

Нет. Настоящее событие может прийти повторно. Обработчик должен учитывать идентификатор и уже выполненные действия, особенно при выдаче доступа, оплате и создании документов.

Владимир Николаев
Владимир Николаев

Разработка и SEO в QuickLanding. Помогаем разобраться в задаче и выбрать подходящий состав работ.

Об эксперте
ОБСУДИМ ЗАДАЧУ КОМПАНИИ

Расскажите о задаче.
Предложим решение.

Пришлите сайт, пример процесса или описание продукта. Разберём исходные условия, предложим первый этап и объясним состав работ.

НАЧНЁМ С ВАШЕЙ ЗАДАЧИ

Что нужно
вашему бизнесу?

Пару слов о проекте — и обсудим подходящий формат.

Используем данные для ответа на обращение.