Vérifier la signature HMAC d'un webhook : la bonne méthode
Ce que HMAC prouve réellement
Le schéma exact utilisé par Olmira
X-Aether-Signature, X-Aether-Webhook-Id et X-Aether-Event. (Le préfixe de l'en-tête indique Aether plutôt que Olmira — un vestige du nom de code interne de la plateforme ; cela ne change rien au fonctionnement du mécanisme, seulement au nom littéral de l'en-tête.)Vérifier une livraison, en termes clairs
crypto intégré à Node couvre tout cela sans une seule dépendance ; les vérifications préalables ci-dessous sont là où les implémentations correctes se distinguent réellement des cassées.Les erreurs qui font échouer la vérification
. — est la deuxième plus fréquente, et c'est une erreur facile à commettre parce que le corps est la chose la plus « évidente » à hacher.Avant de lui faire confiance en production
Vérifiez d'abord la fenêtre d'horodatage
Rejetez tout ce qui sort d'une petite tolérance (Olmira publie 300 secondes, soit cinq minutes, comme sa propre valeur de référence) avant de dépenser du temps CPU à calculer une empreinte — une signature périmée ne mérite pas la comparaison.
Comparez en temps constant
Utilisez la primitive de comparaison à temps constant de votre langage, et non un simple test d'égalité, pour qu'une non-correspondance ne divulgue jamais d'information temporelle sur la proximité d'une tentative.
Vérifiez que vous hachez le corps brut de la requête
Journalisez au moins une fois pendant la configuration la chaîne exacte que votre code s'apprête à hacher, puis comparez-la, octet par octet, à ce qu'une livraison de test a réellement envoyé.
Anticipez la rotation du secret
Où que vous stockiez le secret, faites en sorte que sa modification tienne en une ligne de configuration — le faire tourner dans le tableau de bord sans le mettre à jour au même moment fait échouer toutes les livraisons jusqu'à ce que vous rattrapiez le retard.
Comment Olmira gère cela
À lire aussi
Erreurs de données lors de l'import CSV — et comment les corriger — la même discipline « vérifier explicitement, ne pas faire confiance en silence », appliquée aux données qui circulent dans l'autre sens.
Sortir votre entreprise des tableurs : une feuille de route pratique — d'où viennent généralement les données importées, pour commencer.
Les IP sources changent — derrière des répartiteurs de charge, au gré des évolutions d'infrastructure du prestataire, avec le temps — et les mettre en liste blanche se révèle fragile en pratique. Une signature cryptographique prouve l'authenticité quel que soit le chemin réseau, ce qui est une garantie plus solide et plus stable que « la requête venait d'une plage que nous reconnaissions aujourd'hui ».
Non — le schéma est identique partout. La seule chose qui diffère d'un endpoint à l'autre est le secret lui-même, puisque chacun est généré indépendamment.
Non : vérifiez la signature, accusez réception rapidement, puis effectuez ensuite, de façon asynchrone, tout ce qui est lent (écritures en base de données, appels à d'autres systèmes). Un émetteur de webhooks dont l'attente de votre point de terminaison arrive à expiration considérera généralement cela comme un échec et réessaiera — un déclenchement que vous ne souhaitez pas provoquer par lenteur alors que rien n'a réellement échoué.
Rejetez avant tout autre traitement — une réponse 4xx et rien d'autre. Ne décrivez pas dans le corps de la réponse pourquoi la vérification a échoué ; un attaquant qui sonde votre endpoint ne doit pas obtenir gratuitement l'information sur la partie de la signature falsifiée qui était erronée.