Summary
IntaSend webhooks currently support only a shared "challenge" body field
and a bearer header token for authentication. Neither provides cryptographic
proof that the request body has not been tampered with or that the sender
has access to the signing key.
Request
Add HMAC-SHA256 request signing to webhook deliveries, matching the
pattern used by other payment providers:
- Stripe: sends
Stripe-Signature header with t=<timestamp>,v1=<signature>
- WhatsApp Cloud API: sends
X-Hub-Signature-256: sha256=<hex>
- GitHub: sends
X-Hub-Signature-256: sha256=<hex>
Merchants should be able to configure a per-endpoint webhook signing secret
in the dashboard. IntaSend would sign the raw request body with HMAC-SHA256
using that secret and include the signature in an X-Intasend-Signature
header (or similar).
Why
- A leaked bearer token or challenge value allows silent webhook forgery
with no server-side detection.
- Industry standard for payment webhook security since at least 2017.
- Required for SOC 2 and PCI DSS 4.0 compliance posture of customers
integrating IntaSend into regulated workflows.
Reference implementation
See Stripe's webhook signature verification algorithm:
https://stripe.com/docs/webhooks/signatures
Filed as a downstream requirement from Mirindi/dukabot#295.
Summary
IntaSend webhooks currently support only a shared "challenge" body field
and a bearer header token for authentication. Neither provides cryptographic
proof that the request body has not been tampered with or that the sender
has access to the signing key.
Request
Add HMAC-SHA256 request signing to webhook deliveries, matching the
pattern used by other payment providers:
Stripe-Signatureheader witht=<timestamp>,v1=<signature>X-Hub-Signature-256: sha256=<hex>X-Hub-Signature-256: sha256=<hex>Merchants should be able to configure a per-endpoint webhook signing secret
in the dashboard. IntaSend would sign the raw request body with HMAC-SHA256
using that secret and include the signature in an
X-Intasend-Signatureheader (or similar).
Why
with no server-side detection.
integrating IntaSend into regulated workflows.
Reference implementation
See Stripe's webhook signature verification algorithm:
https://stripe.com/docs/webhooks/signatures
Filed as a downstream requirement from Mirindi/dukabot#295.