Le verdict en trois phrases
Un webhook de paiement non verifie peut etre usurpe : n'importe qui envoie un faux callback et vos commandes passent "payees" gratuitement. Deux controles ferment la porte : la verification de signature HMAC (avec fenetre anti-rejeu de 5 minutes) et une cle d'idempotence qui bloque le double credit malgre les tempetes de retries. A Dakar comme a Lagos en 2026, faire confiance au callback brut est la faille la plus courante et la plus couteuse.
La surface de menace
Un endpoint webhook est public par nature : l'operateur doit pouvoir l'appeler. Sans controle, cette porte ouverte devient une faille.
| Menace | Mecanisme | Impact | Parade |
|---|---|---|---|
| Faux callback | Requete forgee "paid" | Commande livree non payee | Signature HMAC |
| Rejeu | Renvoi d'un callback capture | Double credit compte | Fenetre 5 min + nonce |
| Double credit | Retries operateur (jusqu'a 5x) | Solde/commande dupliques | Cle d'idempotence |
| Injection payload | Champs manipules | Montant fausse | Verifier montant cote serveur |
| Fuite d'endpoint | URL devinee | Sondage malveillant | Secret + rate limit |
Les operateurs mobile money renvoient un webhook jusqu'a 5 fois tant qu'ils ne recoivent pas un 2xx. Sans idempotence, chaque retry recredite la commande.
Checklist de durcissement
Securiser un webhook tient en une poignee de regles appliquees systematiquement.
| Controle | Regle 2026 | Pourquoi |
|---|---|---|
| Signature HMAC | Recalculer et comparer le hash | Prouve l'origine |
| Fenetre anti-rejeu | Rejeter timestamp > 5 min | Bloque le replay |
| Cle d'idempotence | 1 evenement traite 1 seule fois | Stoppe le double credit |
| Accuse 2xx uniquement | Ack seulement si traite | Evite les retries inutiles |
| Verif montant | Comparer au montant commande | Contre l'injection |
| Log + alerte | Journaliser tout mismatch | Detection precoce |
| Rate limit | Limiter les appels/IP | Freine le sondage |
Regle d'or : ne jamais faire confiance au corps brut. On verifie la signature, on rejette hors fenetre, on deduplique par cle, puis seulement on met a jour la commande.
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
Ibrahima, developpeur d'une boutique a Dakar, recevait le webhook Wave et marquait la commande payee sans verifier la signature. Un attaquant envoie 40 faux callbacks "paid" sur des paniers de 35 000 FCFA : 1 400 000 FCFA de commandes partent en preparation sans encaissement. Apres correctif (HMAC + fenetre 5 min + cle d'idempotence), les 40 requetes forgees sont rejetees et un pic de 5 retries legitimes ne credite plus qu'une seule fois. Cout de la faille avant correctif : 1 400 000 FCFA de marchandise potentiellement perdue ; cout du correctif : une demi-journee de dev.
FAQ
Qu'est-ce qu'une signature HMAC concretement ? L'operateur signe le payload avec un secret partage ; votre serveur recalcule le meme hash et compare. Si les deux hash different, le callback est faux et vous le rejetez avant tout traitement.
Pourquoi une fenetre de 5 minutes ? Elle limite le rejeu : un callback capture puis renvoye plus tard est refuse car son timestamp est perime. Cinq minutes couvrent les latences reseau sans laisser une longue fenetre d'attaque.
Comment fonctionne une cle d'idempotence ? Chaque evenement porte un identifiant unique ; vous le stockez apres traitement. Si le meme identifiant revient (jusqu'a 5 retries operateur), vous renvoyez 2xx sans re-crediter.
Faut-il verifier le montant dans le webhook ? Oui, toujours cote serveur. Comparez le montant du callback a celui de la commande enregistree ; un ecart signale une injection de payload ou une erreur, et bloque la validation.
Que faire en cas de mismatch de signature ? Journaliser l'evenement, alerter, et ne rien mettre a jour. Un pic de mismatchs revele une tentative d'usurpation ; l'alerte vous laisse reagir avant les degats.
Discutons de votre projet. Nous auditons et durcissons vos webhooks Wave et Orange Money (signature, idempotence, alertes) avant la mise 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.

