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

HMAC-подпись вебхука: почему «просто принять» — это дыра в безопасности

Каждый раз когда ты принимаешь вебхук без проверки подписи, ты доверяешь любому кто знает твой URL. А URL — не секрет.

Стандартная схема: отправитель берёт тело запроса, подписывает его HMAC-SHA256 с секретным ключом и кладёт подпись в заголовок (X-Signature, X-Hub-Signature-256 — зависит от платформы). Ты на своей стороне делаешь то же самое и сравниваешь результат.

Критически важная деталь: сравнение нужно делать через hmac.compare_digest (Python) или hash_equals (PHP), а НЕ через == или ===. Обычное сравнение уязвимо к timing attack — атакующий может угадать подпись побайтово, замеряя время ответа.

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

Третья: добавляй проверку timestamp из заголовка. Подпись валидна 5 минут — это защита от replay-атак. Старый перехваченный запрос не пройдёт повторно.

Если платформа не поддерживает подписи — минимум: проверяй IP источника против их опубликованного диапазона + используй webhook secret в URL как дополнительный фактор.
Этот пост опубликован в Telegram-канале Автоматизация на вебхуках. Подписаться можно по ссылке: @webhook_automation_hub_arb.
tech

Свежие посты в категории «Сервисы и инфраструктура»

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

start

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

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

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