Skip to main content

Meilleures pratiques en matiùre d’utilisation des webhooks

Suivez ces meilleures pratiques pour amĂ©liorer la sĂ©curitĂ© et l’analyse des performances pendant l’utilisation de webhooks.

Abonnez-vous au nombre minimal d’évĂ©nements

Abonnez-vous uniquement aux Ă©vĂ©nements de webhook dont vous avez besoin. Cet abonnement rĂ©duit la quantitĂ© de travail nĂ©cessaire Ă  votre serveur. Pour plus d’informations sur l’abonnement aux Ă©vĂ©nements, consultez « CrĂ©ation de webhooks Â» et « Ă‰dition de webhooks Â».

Utiliser un secret de webhook

Avertissement

Pour Ă©viter l’exposition accidentelle d’informations confidentielles, n’incluez pas d’informations confidentielles dans l’URL de votre charge utile. Cela comprend vos propres clĂ©s d’API et autres informations d’authentification. Au lieu de cela, pour confirmer que les livraisons de webhook ont Ă©tĂ© envoyĂ©es par GitHub et n’ont pas Ă©tĂ© altĂ©rĂ©es, utilisez un secret de webhook. Pour plus d’informations, consultez « Validation des livraisons de webhook Â».

Le secret Webhook doit ĂȘtre une chaĂźne de texte alĂ©atoire avec une entropie Ă©levĂ©e. Vous devez stocker en toute sĂ©curitĂ© votre secret webhook de maniĂšre Ă  ce que votre serveur puisse y accĂ©der.

Utilisez la vérification HTTPS et SSL

Vous devez vous assurer que votre serveur utilise une connexion HTTPS. Par défaut, GitHub vérifie les certificats SSL pendant la livraison de webhooks. GitHub recommande de laisser la vérification SSL activée.

Autoriser les adresses IP de GitHub

Vous pouvez configurer une liste verte d’adresses IP pour votre serveur et ajouter les adresses IP que GitHub utilise pour les livraisons de webhook. Cette procĂ©dure peut bloquer les requĂȘtes usurpĂ©es sur votre serveur.

Vous pouvez utiliser le point de terminaison GET /meta pour rechercher la liste actuelle des adresses IP de GitHub. Pour plus d’informations, consultez « Points de terminaison d’API REST pour les mĂ©tadonnĂ©es Â». GitHub apporte occasionnellement des modifications Ă  ses adresses IP. Vous devez donc mettre Ă  jour rĂ©guliĂšrement votre liste verte d’adresses IP pĂ©riodiquement.

Pour plus d’informations, consultez « Ă€ propos des adresses IP de GitHub Â».

Répondez dans 10 secondes

Votre serveur doit rĂ©pondre avec une rĂ©ponse 2XX dans 10 secondes suivant la rĂ©ception d’une livraison de webhook. Si votre serveur prend plus de temps qu’indiquĂ© pour rĂ©pondre, alors GitHub arrĂȘte la connexion et considĂšre la livraison comme un Ă©chec.

Pour rĂ©pondre en temps opportun, vous pouvez configurer une file d’attente pour traiter les charges utiles webhook de maniĂšre asynchrone. Votre serveur peut rĂ©pondre lorsqu’il reçoit le webhook, puis traiter la charge utile en arriĂšre-plan sans bloquer les futures livraisons de webhook. Par exemple, vous pouvez utiliser des services tels que Hookdeck ou des bibliothĂšques telles que Resque (Ruby), RQ (Python) ou RabbitMQ (Java).

VĂ©rifier le type d’évĂ©nement et l’action avant de traiter l’évĂ©nement

Il existe plusieurs types d’évĂ©nements webhook, et plusieurs Ă©vĂ©nements peuvent comprendre plusieurs types d’actions. GitHub continue d’ajouter de nouveaux types d’évĂ©nements et de nouvelles actions aux types d’évĂ©nements existants. Votre application doit vĂ©rifier le type d’évĂ©nement et l’action d’une charge utile webhook avant le traitement de la charge utile. Pour dĂ©terminer le type d’évĂ©nement, vous pouvez utiliser l’en-tĂȘte de demande X-GitHub-Event. Pour dĂ©terminer le type d’action, vous pouvez utiliser la clĂ© de premier niveau action dans la charge utile de l’évĂ©nement.

Renouveler les livraisons manquées

Si votre serveur tombe en panne, vous devez renvoyer les webhooks manquĂ©s une fois que votre serveur est rĂ©tabli. Pour plus d’informations, consultez « Livrer de nouveau des webhooks Â».

Utilisation de l’en-tĂȘte X-GitHub-Delivery

Dans une attaque par rejeu, un mauvais acteur intercepte une livraison de webhook et envoie de nouveau la livraison. Pour vous protĂ©ger contre les attaques par rejeu, vous pouvez utiliser l’en-tĂȘte X-GitHub-Delivery pour garantir que chaque livraison est unique pour chaque Ă©vĂ©nement.

Remarque

Si vous demandez une relivraison, l’en-tĂȘte X-GitHub-Delivery est identique Ă  celui de la livraison d’origine.

Pour aller plus loin