Считайте подпись из точного «сырого» тела запроса. Сравнивайте подписи constant-time.
Подписанные вебхуки
Подписанные вебхуки
События доставки, bounce и жалоб с подписью HMAC-SHA256.
Требования к получателю
Исходящие ограничения
Создание эндпоинта требует HTTPS. Приватные, loopback, link-local, metadata-адреса и адреса с учётными данными блокируются и повторно резолвятся в момент подключения. Редиректы не выполняются. Доставка использует ограниченные таймауты и число попыток.
Реализованные меры
TLS для поддерживаемых внешних HTTP- и SMTP-путей отправки Хешированные, scoped, истекающие API-ключи с опциональными IP allowlist
Границы шифрования
TLS — это шифрование при передаче, а не end-to-end шифрование почты. Провайдер получателя может обрабатывать доставленное содержимое. Клиентам, которым нужна конфиденциальность на уровне сообщения, следует добавить соответствующую схему — S/MIME, PGP или шифрование на уровне приложения.
signed = timestamp + "\0" + event_id + "\0" + raw_body
expected = HMAC-SHA256(webhook_secret, signed)
constant_time_compare(expected, Postline-Signature)