Inscreva-se no número mínimo de eventos
Você só deve se inscrever nos eventos de webhook de que necessita. Isso reduzirá a quantidade de trabalho que seu servidor precisará executar. Para obter mais informações sobre como assinar eventos, consulte AUTOTITLE e AUTOTITLE.
Usar um segredo de webhook
Aviso
Para evitar a exposição acidental de informações confidenciais, não inclua esse tipo de informação na URL de conteúdo. Isso inclui suas chaves de API e outras credenciais de autenticação. Em vez disso, para validar que as entregas de webhook foram realmente enviadas pelo GitHub e não sofreram adulteração, utilize um segredo de webhook. Para saber mais, confira AUTOTITLE.
O segredo do webhook deve ser uma sequência de caracteres aleatória com alta entropia. Você deve armazenar com segurança seu segredo de webhook de uma maneira que seu servidor possa acessar.
Usar verificação HTTPS e SSL
Você deve garantir que seu servidor use uma conexão HTTPS. Por padrão, o GitHub verificará certificados SSL ao entregar webhooks. O GitHub recomenda que deixe a verificação de SSL habilitada.
Responder em até 30 segundos
Seu servidor deve dar uma resposta 2XX em até 30 segundos depois de receber uma entrega de webhook. Se o servidor demorar mais do que isso para responder, o GitHub terminará a conexão e considerará que houve falha na entrega.
Para responder em tempo hábil, convém configurar uma fila para processar conteúdo de webhook de forma assíncrona. Seu servidor pode responder ao receber o webhook e, em seguida, processar o conteúdo em segundo plano sem bloquear futuras entregas de webhook. Por exemplo, você pode usar serviços como
Verifique o tipo de evento e a ação antes de processar o evento
Há vários tipos de evento de webhook e muitos eventos podem ter vários tipos de ação. O GitHub continua a adicionar novos tipos de evento e novas ações aos tipos de evento existentes. Seu aplicativo deve verificar o tipo de evento e a ação de um conteúdo de webhook antes de processar o conteúdo. Para determinar o tipo de evento, você pode usar o cabeçalho de solicitação X-GitHub-Event. Para determinar o tipo de ação, você pode usar a chave de nível superior no conteúdo do evento.
Reentregar entregas perdidas
Se o servidor ficar inoperante, você deverá reenviar os webhooks perdidos assim que o servidor voltar a funcionar. Para saber mais, confira AUTOTITLE.
Usar o cabeçalho X-GitHub-Delivery
Em um ataque de reprodução, um agente mal-intencionado intercepta uma entrega de webhook e reenvia a entrega. Para proteger contra ataques de repetição, você pode usar o cabeçalho X-GitHub-Delivery para garantir que cada entrega seja exclusiva por evento.
Observação
Se você solicitar uma reentrega, o cabeçalho X-GitHub-Delivery será o mesmo da entrega original.
Leitura adicional
- AUTOTITLE
- AUTOTITLE