# Проверка подписи webhook.

- Канонический URL: https://www.broadnet.me/ru/tools/webhook-signature-validator
- Язык: ru
- Последнее обновление: 2026-10-21
- Издатель: BroadNet (https://www.broadnet.me)
- Markdown-версия страницы, созданная из опубликованной страницы.

HMAC · Web Crypto · работает в вашем браузере

Вставьте полезную нагрузку webhook, ваш секрет подписи и полученную подпись. Инструмент вычисляет HMAC (SHA-256 или SHA-1) с помощью Web Crypto API и сообщает, совпадает ли он. Универсально — работает с любым webhook, подписанным HMAC. Ничего не покидает ваше устройство.

Используйте точные байты в том виде, в котором они получены — повторная сериализация JSON меняет хеш.

Алгоритм

Проверка

HMAC вычислен ниже. Вставьте подпись, чтобы проверить совпадение.

Вычисленный HMAC-SHA-256 (hex)

Вычисление в вашем браузере…

Всё выполняется локально через Web Crypto API — payload и секрет никогда не покидают эту страницу. В любом онлайн-инструменте предпочитайте тестовый секрет реальному продакшен-секрету.

Короткий ответ

## Что такое подпись webhook?

Подпись webhook — это хеш с ключом, то есть **HMAC**, от тела запроса, вычисляемый отправителем с помощью секрета, известного обеим сторонам, и передаваемый вместе с запросом, обычно в заголовке. Чтобы проверить её, вы заново вычисляете HMAC от того же необработанного тела с тем же секретом и алгоритмом и сравниваете. Совпадение доказывает, что payload пришёл от того, кто владеет секретом, и не был изменён при передаче. Это подтверждает происхождение и целостность — но не шифрует payload.

### Как правильно проверить подпись

1. Захватите **необработанное тело запроса** до любого разбора. Повторная сериализация JSON меняет порядок ключей и пробелы, что меняет хеш.
2. Вычислите HMAC с общим секретом и хеш-функцией отправителя (в большинстве современных API это SHA-256).
3. Закодируйте результат в hex и сравните его с заголовком подписи, игнорируя любой префикс схемы, например sha256=.
4. В продакшене сравнивайте с помощью функции равенства с **постоянным временем**, чтобы избежать атак по времени, и отклоняйте устаревшие запросы по временной метке, подписанной провайдером.

## Часто задаваемые вопросы

**Что такое подпись webhook?**

Подпись webhook — это хеш с ключом (HMAC) от тела запроса, вычисляемый отправителем с общим секретом и передаваемый в заголовке. Получатель заново вычисляет HMAC от того же необработанного тела с тем же секретом и сравнивает — если они совпадают, payload подлинный и не изменён. Это доказывает происхождение и целостность без шифрования payload.

**Как проверить подпись HMAC у webhook?**

Возьмите точное необработанное тело запроса (до любого парсинга или повторной сериализации JSON), вычислите HMAC с вашим общим секретом и алгоритмом хеширования отправителя (обычно SHA-256) и закодируйте результат в hex. Сравните его с заголовком подписи, игнорируя префикс вроде 'sha256='. Если они равны, подпись действительна.

**Почему моя подпись не совпадает?**

Обычные причины: тело было пересериализовано и теперь побайтово отличается от подписанного; неверный секрет или алгоритм хеширования; провайдер подписывает строку, которая также включает временную метку или префикс версии; или несоответствие кодировки hex и base64. Всегда хешируйте точные необработанные байты в том виде, в котором они получены.

**Безопасно ли вставлять сюда реальный секрет?**

Вычисление полностью выполняется в вашем браузере через Web Crypto API — ничего не отправляется и не логируется. В качестве общей меры предосторожности всё же предпочитайте тестовый секрет реальному продакшен-секрету в любом онлайн-инструменте и меняйте секрет, который вы подозреваете в утечке.

**Использовать SHA-256 или SHA-1?**

Используйте HMAC-SHA-256. SHA-1 предлагается здесь только потому, что некоторые устаревшие провайдеры всё ещё отправляют подписи SHA-1. Новые интеграции должны стандартизироваться на SHA-256.

**Шифрует ли подпись мой payload?**

Нет. Подпись HMAC подтверждает подлинность payload и доказывает, что он не был изменён, но тело по-прежнему передаётся в открытом виде. Используйте HTTPS (TLS) для конфиденциальности; подпись касается происхождения и целостности, а не секретности.

**Почему в продакшене сравнивают за постоянное время?**

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

[SMS API REST + SMPP 3.4, аутентификация по токену Bearer, вебхуки доставки.](https://www.broadnet.me/ru/products/sms-api) [Шлюз SMSC SMSC операторского уровня поверх SMPP + SS7.](https://www.broadnet.me/ru/operators/smsc-gateway) [Центр разработчиков Быстрый старт, TypeScript SDK, справочники и инструменты.](https://www.broadnet.me/ru/developers)

## Проверяйте любой webhook с подписью HMAC.

Этот валидатор работает с любым провайдером, который подписывает webhooks с помощью HMAC. Когда будете готовы к разработке, BroadNet предлагает REST API с токенами Bearer, вебхуки отчётов о доставке и прямые подключения SMPP 3.4.

[Центр разработчиков](https://www.broadnet.me/ru/developers) [SMS API](https://www.broadnet.me/ru/products/sms-api)
