Перейти к содержимому

Webhooks и интеграции

Проверьте подпись webhook

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

Шаги

  1. Возьмите сырое тело как байты. Большинство фреймворков по умолчанию отдают уже разобранный объект, и это поздно.
  2. Вычислите подпись именно по этим байтам, используя секрет вашего endpoint.
  3. Сравнивайте функцией постоянного времени, а не обычным равенством строк.
  4. Разбирайте JSON только после того, как подпись сошлась.
  5. Отклоняйте всё, что не прошло, и логируйте delivery ID, а не тело.

Как проверить результат

Настоящая доставка проходит проверку, а тот же payload с одним изменённым символом — нет.

Что обычно идёт не так

  • Разбор и повторная сериализация до вычисления подписи.
  • Middleware для парсинга тела, съедающий поток до вашего обработчика.
  • Обычное === на подписи, которое утекает по времени.
Это помогло решить задачу?

Это не помогло

Напишите нам, указав платформу и версию, выполненные шаги, ожидаемый результат и то, какого workspace или QR-кода это касается. Замаскируйте любые секреты перед тем, как что-то прикреплять.

Написать в поддержку