Автоматизация на вебхуках

HMAC-подпись — не декор. Без неё входящий хук можно подделать за минуту

HMAC-подпись — не декор. Без неё входящий хук можно подделать за минуту

Смотрим в тело запроса и проверяем подпись до любых бизнес-действий. Порядок такой: принять raw body, взять секрет из vault/ENV, посчитать HMAC, сравнить с заголовком через constant-time compare. Если провайдер шлёт timestamp — добавьте окно допустимого времени, иначе получите replay-атаку с повторной доставкой старого события.

Типовые ошибки: парсить JSON до верификации и терять исходные байты; использовать обычное ==, где утечки по времени; нормализовать тело «для удобства» и ломать подпись; доверять одному только IP-whitelist. IP — это фильтр, не граница доверия. Подпись решает, пришёл ли запрос от того, кто знает секрет.

Пример для Python: mac = hmac.new(secret, raw_body, hashlib.sha256).hexdigest()
ok = hmac.compare_digest(mac, header_sig) Для Node.js берите crypto.timingSafeEqual. Если подпись не сошлась — 401/403, логируем fingerprint запроса, но не сам секрет и не полный raw body в открытые логи. Идемпотентность — это не роскошь, а база: даже валидный webhook может прийти дважды.

Если провайдер присылает несколько заголовков подписи, выбирайте один формат и фиксируйте его в интеграции. Иначе через полгода получите зоопарк из X-Signature, X-Hub-Signature и «ещё одного, потому что у партнёра так удобнее».

Проверяйте HMAC на входе, а дальше уже запускайте очередь, ретраи и бизнес-обработку. Всё остальное — ловля 5xx на ровном месте.
Этот пост опубликован в Telegram-канале Автоматизация на вебхуках. Подписаться можно по ссылке: @webhook_automation_hub_arb.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.