Vérifier les signatures des webhooks en toute sécurité
Protégez votre service dorsal de paiement contre les événements falsifiés en validant les signatures des webhooks Stripe et en appliquant des pratiques sécurisées pour les points d’accès.
Vérifier les signatures des webhooks en toute sécurité est une leçon Stripe Payments & SaaS Billing Systems gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Stripe Payments & SaaS Billing Systems, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Stripe Payments & SaaS Billing Systems comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Why Verify Webhooks?
Your webhook endpoint is public. Without verification, an attacker could POST a fake payment_succeeded event and unlock paid features for free.
The Signing Secret
Each webhook endpoint has a signing secret (starts with whsec_). Stripe uses it to sign every event it sends you.
The Stripe-Signature Header
Every webhook request carries a Stripe-Signature header containing a timestamp and an HMAC signature of the payload.
// Stripe-Signature: t=1700000000,v1=5257a8...Use the Raw Body
Signature verification needs the exact raw request body. If a framework parses JSON first, the bytes change and verification fails.
app.post('/webhook',
express.raw({ type: 'application/json' }),
handler
);Verifying with the SDK
The Stripe SDK does the HMAC math for you via constructEvent.
function verify(rawBody, sig, secret, stripe) {
return stripe.webhooks.constructEvent(rawBody, sig, secret);
}Handling Verification Failure
If verification throws, reject the request with a 400. Never process an unverified event.
function process(ok) {
if (!ok) return { status: 400, body: 'invalid signature' };
return { status: 200, body: 'received' };
}
console.log(process(false));Timestamp Tolerance
The signature includes a timestamp. Stripe rejects events older than a tolerance window to block replay attacks with captured payloads.
Constant-Time Comparison
Under the hood, signatures are compared in constant time to avoid timing attacks. The SDK handles this; never hand-roll a simple equality check.
Respond Fast, Process Later
Acknowledge with 200 quickly, then do heavy work asynchronously. Slow responses make Stripe retry and can cause duplicates.
Keep the Secret Safe
Store the signing secret in environment variables, never in source control. Rotate it if it leaks, using the dashboard.
const secret = process.env.STRIPE_WEBHOOK_SECRET;
console.log(Boolean(secret));Per-Endpoint Secrets
Each registered endpoint has its own secret. Use the correct one for the URL receiving the event, especially across test and live modes.
Quick Check
Why must you use the raw request body for verification?
Recap
You secured your webhook endpoint:
- Verify the Stripe-Signature with the signing secret
- Use the raw body and the SDK constructEvent
- Reject failures and rely on timestamp tolerance against replays
- Keep secrets in env vars and respond fast
Questions Fréquemment Posées
La leçon « Vérifier les signatures des webhooks en toute sécurité » est-elle gratuite ?
Oui — le texte complet de « Vérifier les signatures des webhooks en toute sécurité » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Stripe Payments & SaaS Billing Systems, passe à CoddyKit PRO. Le cours Stripe Payments & SaaS Billing Systems comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Vérifier les signatures des webhooks en toute sécurité » ?
Protégez votre service dorsal de paiement contre les événements falsifiés en validant les signatures des webhooks Stripe et en appliquant des pratiques sécurisées pour les points d’accès. Tu pratiques Stripe Payments & SaaS Billing Systems avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Stripe Payments & SaaS Billing Systems ?
Aucune expérience préalable n'est requise. Stripe Payments & SaaS Billing Systems sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Vérifier les signatures des webhooks en toute sécurité » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Stripe Payments & SaaS Billing Systems ?
Oui. Chaque leçon Stripe Payments & SaaS Billing Systems inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Stockage sécurisé des moyens de paiement (jetons)
- Mise en œuvre de l’authentification forte du client (SCA)
- Bonnes pratiques PCI pour les développeurs
- Vérifier les signatures des webhooks en toute sécurité