Proteger payloads de Webhook com um segredo

Concluído

Depois que sua função estiver configurada para receber cargas úteis, ela escutará qualquer carga enviada para o ponto de extremidade que você configurou. Por motivos de segurança, recomendamos que limite os pedidos apenas para os provenientes do GitHub. Existem algumas formas de fazer isto. Por exemplo, pode optar por aprovar pedidos provenientes do endereço IP do GitHub na lista de permissões. Um método mais fácil é configurar um token secreto e validar o pedido através do mesmo.

No cenário do exemplo, a administração do seu Departamento de TI está satisfeita com o webhook acionado pela função que criou numa aplicação de Funções do Azure. Todas as informações sobre as atualizações do wiki da empresa estão a ser analisadas por essa função e enviadas para a empresa sempre que é acionado o evento Gollum. A gerência perguntou quão seguras são as informações passadas do GitHub. Pediram-lhe para encontrar uma forma de proteger as informações e verificar se é o GitHub que envia as atualizações.

Nesta unidade, irá aprender a proteger o seu payload de webhook com um segredo e validar payloads do GitHub.

Segredos de webhook

Definir um segredo de webhook permite-lhe garantir que os pedidos POST enviados para o URL do payload são provenientes do GitHub. Quando definir um segredo, irá receber o cabeçalho x-hub-signature no pedido POST do webhook.

No GitHub, você pode definir o campo secreto indo para o repositório onde você configurou seu webhook e, em seguida, editando o webhook. No próximo exercício, vamos mostrar-lhe como o fazer com o nosso exemplo.

Validar cargas úteis do GitHub

Quando o seu token secreto for definido, o GitHub irá utilizá-lo para criar uma assinatura hash para cada payload. Esta assinatura hash é transmitida juntamente com cada pedido nos cabeçalhos como x-hub-signature.

Quando a sua função receber um pedido, tem de calcular o hash com o seu segredo e garantir que corresponde ao hash no cabeçalho do pedido. O GitHub utiliza uma cadeia HMAC SHA1 hexadecimal para calcular o hash. Assim, tem de calcular o seu hash da mesma forma, através da chave do segredo e do corpo do payload. A assinatura hash começa com o texto sha1=.