Le verdict en trois phrases
Un webhook non signé permet à un attaquant de forger une notification « paiement confirmé » et de déclencher une livraison sans avoir payé. La parade tient en cinq contrôles : vérification HMAC, idempotence, allowlist IP, protection contre le replay et journalisation. En 2026, une fenêtre de tolérance de 300 secondes et un nombre standard de 5 tentatives de retry opérateur sont les repères à intégrer dès le départ.
Les cinq contrôles de durcissement
Chaque contrôle bloque une classe d'attaque distincte. Les empiler donne une défense en profondeur : même si l'un cède, les autres tiennent.
| Contrôle | Attaque bloquée | Mise en œuvre |
|---|---|---|
| Vérification HMAC | Notification forgée | Comparer signature du header |
| Idempotence | Double traitement | Clé unique par événement |
| Allowlist IP | Source non autorisée | Filtrer IP opérateur |
| Fenêtre timestamp | Replay différé | Rejeter au-delà de 300 s |
| Journalisation | Investigation à l'aveugle | Logger chaque webhook |
La vérification HMAC se fait sur le corps brut de la requête, jamais sur le JSON reparsé : un reparse peut réordonner les clés et casser la signature.
Repères chiffrés 2026
Voici les valeurs de référence 2026 (estimations) pour dimensionner votre durcissement.
| Paramètre | Valeur 2026 | Rôle |
|---|---|---|
| Fenêtre de tolérance timestamp | 300 s | Anti-replay |
| Tentatives de retry opérateur | 5 | Livraison garantie |
| Délai entre retries | Exponentiel (min → h) | Back-off |
| Réponse attendue | HTTP 200 rapide | Sinon nouveau retry |
| Rétention des logs | 90 jours min | Investigation |
| Coût moyen d'un incident | 200 000 à 2 000 000 FCFA | Fraude + réputation |
Répondez HTTP 200 immédiatement après avoir persisté l'événement, puis traitez en asynchrone : si votre traitement lent dépasse le timeout, l'opérateur relance et vous risquez un double traitement sans idempotence.
Besoin d'un site web professionnel ?
Kolonell crée des sites web qui attirent des clients, optimisés pour le marché sénégalais. Devis gratuit en 2 minutes.
Mini cas pratique
Fatou gère une marketplace de mode à Dakar. Un attaquant repère que son endpoint de webhook ne vérifie pas la signature et poste 8 fausses confirmations de 50 000 FCFA, déclenchant 400 000 FCFA de livraisons non payées. Après durcissement — HMAC sur le corps brut, allowlist IP, fenêtre de 300 s — ces requêtes forgées sont rejetées en amont. Coût de la sécurisation : une journée de dev (~150 000 FCFA), contre une perte évitée de 400 000 FCFA par incident.
FAQ
Pourquoi vérifier la signature HMAC ? Sans elle, n'importe qui connaissant votre URL peut simuler un paiement confirmé. La signature prouve que la notification vient bien de l'opérateur.
Qu'est-ce que la fenêtre de 300 secondes ? C'est la tolérance maximale entre l'horodatage du webhook et la réception. Au-delà, on rejette pour bloquer les attaques par replay différé.
Pourquoi l'idempotence est-elle critique ? Les opérateurs relancent jusqu'à 5 fois un webhook non acquitté. Sans clé d'idempotence, vous traitez le même paiement plusieurs fois.
L'allowlist IP suffit-elle ? Non, seule elle est fragile (IP usurpables, plages changeantes). Elle complète le HMAC, elle ne le remplace pas.
Combien de temps garder les logs ? Au minimum 90 jours pour investiguer une fraude ou un litige, idéalement corrélés à l'event_id de l'opérateur.
Discutons de votre projet. Nous auditons et durcissons vos webhooks mobile money selon cette checklist en production. WhatsApp +221 77 596 93 33.
Mohamed Bah
Fondateur, Kolonell
Passionné par le digital et l'entrepreneuriat en Afrique, Mohamed accompagne les entreprises sénégalaises dans leur transformation digitale depuis 2020. Fondateur de Kolonell, il croit que chaque PME mérite une présence en ligne professionnelle et accessible.
