Webhook Security — Signatures, Replay Windows, and the Attack Surface Nobody Audits
A webhook endpoint is a public URL that accepts POSTs and changes state in your systems — which is to say, it's an unauthenticated write API unless you make it otherwise. The security model is well understood and regularly skipped: verify signatures correctly (several popular ways to do it wrong), bound the replay window, and remember that on the provider side, delivering webhooks means making HTTP requests to arbitrary customer URLs — an SSRF machine by design. This post covers both directions of the attack surface.
Receivers: HMAC over raw bytes, constant-time, scheme-aware, rotatable secret lists; signed-timestamp replay windows; fail closed loudly — and schema-validate anyway. Providers: webhook delivery is SSRF by design — resolve-validate-pin destinations, egress-isolate workers, bound and never echo responses.