<b>Webhook security: подпись, nonce и проверка тела — базовый фильтр против мусорных постбэков</b>
Если webhook можно принять без проверки, его можно подделать. Минимальный набор защиты: HMAC-подпись, timestamp, nonce и жёсткая валидация payload. Подпись считай от сырого тела запроса, а не от распарсенного JSON: иначе порядок полей и пробелы сломают сравнение.
Проверяй три вещи до записи конверсии:
— совпадает ли signature с ожидаемым secret;
— не вышел ли timestamp за допустимое окно;
— не использовался ли nonce повторно.
Если хотя бы один пункт не прошёл, запрос не должен доходить до логики атрибуции.
Дальше фильтруй сам payload: разрешённые event_type, формат order_id, длина click_id, валидные суммы и currency. Не доверяй полям, которые влияют на payout, source или статус лида. Лучше отбрасывать лишнее, чем потом чистить дубль или фрод из отчётов.
На стороне приёма держи отдельный лог по отказам: время, IP, причина reject, hash тела. Это упрощает поиск расхождений между sender и receiver и помогает быстро поймать битую интеграцию.
Если webhook проходит без подписи и окна по времени, это не интеграция, а открытая дверь.
Tracker Lab
@tracker_lab
<b>Webhook security: подпись, nonce и проверка тела — базовый фильтр против мусорных постбэков</b>
Этот пост опубликован в Telegram-канале Tracker Lab. Подписаться можно по ссылке: @tracker_lab.