Webhooks в CRM: подпись HMAC, идемпотентность и ретраи
Как принимать исходящие вебхуки от платформ без подделки запросов и без двойных сделок в CRM.
Публичный HTTP-endpoint должен проверять подпись тела запроса общим секретом (HMAC-SHA256 и т.п.) и отклонять запросы вне окна timestamp, если провайдер это поддерживает.
Обработчик должен быть идемпотентным: повторная доставка того же `event_id` не создаёт второй лид — храните обработанные ID в быстром хранилище с TTL.
- OWASP API Security Top 10 (2023) — Риски API, включая аутентификацию и SSRF.
Эксплуатация
Отвечайте 2xx только после успешной записи в очередь или БД; если бизнес-логика упала — контролируемый 5xx заставит провайдера повторить доставку по backoff.
Логируйте сырое тело и заголовки с маскировкой PII — это спасает при разборе инцидентов с «почему не создалась сделка».