Accueil / Guides / Vérifier la signature des webhooks et des API — guide pratique HMAC

Un webhook est le moyen par lequel un service externe envoie des événements vers votre serveur. Mais comme n'importe qui peut envoyer une requête à cette URL, il faut vérifier que la requête reçue provient bien de ce service. La méthode standard pour cela est la signature HMAC.

L'émetteur et le récepteur partagent une clé secrète. L'émetteur hache le corps de la requête avec la clé en HMAC-SHA256 et place la signature dans un en-tête. Le récepteur hache le même corps avec la même clé et compare si les deux signatures correspondent.

En cas de correspondance, deux garanties sont assurées simultanément. Seul celui qui possède la clé peut produire une signature valide, ce qui confirme l'authenticité ; et si le corps change ne serait-ce qu'un peu, la signature diffère, ce qui confirme l'intégrité. La plupart des webhooks, comme ceux de GitHub, Stripe ou Slack, utilisent cette méthode.

Vous pouvez le tester directement dans AG HASH. Activez l'option HMAC, saisissez la clé partagée, puis collez le corps de la requête : la valeur HMAC-SHA256 apparaît. Il suffit de la comparer à la signature figurant dans l'en-tête de la requête. Pour une vérification réelle, il est recommandé d'utiliser une comparaison à temps constant afin d'éviter les attaques temporelles.

Hacher avec cet algorithme