How to Secure Webhook Deliveries
To ensure that webhook payloads are securely transmitted and verified. This guide explains how to configure and validate webhook deliveries using a shared secret.How It Works
When setting up a webhook, a secret is configured on both the sender (our system) and the receiver (your endpoint). Each webhook payload is signed using this secret, allowing the receiver to verify its authenticity.Step 1: Configuring Your Webhook Secret
- When creating a webhook in our system, specify a unique secret key. This secret should be a strong, randomly generated string.
- Store this secret securely on your server; it should never be exposed publicly.
Step 2: Receiving Webhook Payloads
When your server receives a webhook event, the request will include anX-Signature
header containing a HMAC signature
of the payload.
Example header:
Step 3: Validating the Webhook Signature
To verify the webhook payload:- Retrieve the
X-Signature
value from the request headers. - Compute the HMAC SHA-256 signature of the request payload using your webhook secret.
- Compare the computed signature with the one in the
X-Signature
header. - If they match, the webhook is valid.
(Python)
(JavaScript)
Security Considerations
- Always use HTTPS to prevent interception of webhook payloads.
- Reject webhook requests that fail signature validation.
- Rotate secrets periodically to enhance security.