La livraison d'un webhook est une requête HTTP provenant d'un autre système, et non une preuve que l'expéditeur revendiqué est authentique. Vérifiez la signature du fournisseur avant d'autoriser la charge utile à déclencher une action.
Vérifier l'authenticité avant le traitement
- Lisez les spécifications de signature actuelles du fournisseur et vérifiez la signature par rapport au corps brut exact qu'elle définit.
- Utilisez une bibliothèque cryptographique maintenue et une comparaison en temps constant pour les octets de signature.
- Rejetez les signatures non valides et gérez les protections d’horodatage ou de relecture lorsque le fournisseur les prend en charge.
Attendez-vous à des tentatives et à des événements en double
Les fournisseurs peuvent réessayer après un délai d'attente, même si votre application a déjà terminé le travail. Stockez un identifiant d'événement stable et rendez le gestionnaire idempotent afin que le traitement du même événement deux fois ne répète pas une action irréversible.
Continuez à signer les secrets côté serveur, faites-les alterner via le processus documenté du fournisseur et enregistrez uniquement un identifiant et un résultat d'événement. N’incluez jamais de matériel secret ou l’intégralité de la charge utile sensible dans un rapport d’erreurs.
