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.