Safeguard
Security Guides•

Is a webhook IP allowlist enough to trust a delivery?

An IP allowlist narrows who can reach your webhook endpoint, but it does not prove a delivery is genuine. Use it with a secret, HTTPS and checks.

Safeguard Security Team
3 min read

No. An IP allowlist reduces spoofed traffic, but it only tells you where a request came from, not that the payload is genuine or untampered. Pair it with a webhook secret and signature check, HTTPS, and validation of the event itself.

What each control proves

ControlWhat it tells youWhat it misses
IP allowlistThe request came from a listed addressAnything sent through a compromised or shared sender; stale lists
Webhook secret and signatureThe sender knew the secret and the body was not changedReplays of an old valid delivery
HTTPSThe channel is private in transitWho sent it
Event type and delivery ID checksThe payload is the kind you expect and is newWhether the content is safe to act on

GitHub's best practice list includes all of these: use a webhook secret, use HTTPS with SSL verification, allow GitHub's IP addresses, check the event type and action, and use the delivery header to spot replays. It treats the allowlist as one item among several, and notes the list changes, so you fetch it from the meta endpoint and update it periodically.

Why an allowlist alone fails

  • Lists go stale. If the provider adds addresses and you do not update, you drop real events. Teams then widen the rule to "allow all", which removes the control.
  • Some providers send from large shared ranges. An address in the range does not identify one sender.
  • A request that reaches you through a proxy or load balancer may carry a different source address than you expect, so rules need care.
  • An allowlist says nothing about replay. A captured valid delivery from an allowed address is still a valid delivery.

A sensible layered setup

  1. Require HTTPS on the endpoint and leave certificate verification on.
  2. Set a high-entropy secret on the webhook and keep it in a secrets manager.
  3. Verify the signature on the raw body before any other processing.
  4. Check the event type and action. Ignore events you did not subscribe to.
  5. Store the delivery ID and reject repeats.
  6. Add the provider's published IP ranges as an extra filter if you can automate updates.
  7. Respond fast with a 2xx, then do the heavy work in a queue. GitHub advises responding within 10 seconds.

Try it yourself

Click through it at your own pace, or open it full screen. Watch how an API scan reports endpoints by authentication status, which is the same question to ask of every webhook receiver.

Quick check

If I verify the signature, do I still need the allowlist?

It is optional. The signature is the stronger control. An allowlist adds friction for random scanners and keeps noise down, as long as you can keep it current.

Should the secret go in the endpoint URL?

No. GitHub advises keeping sensitive information out of the payload URL. Use the signature header instead.

Safeguard's API security scanning can check your own endpoints for missing authentication. Run the free scan at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.