Início / Guias / Verificar webhooks e assinaturas de API — guia prático de HMAC

Um webhook é a forma como um serviço externo envia eventos para o seu servidor. Mas como qualquer pessoa pode enviar requisições para aquela URL, você precisa confirmar se a requisição recebida veio realmente daquele serviço. O método padrão para isso é a assinatura HMAC.

O lado emissor e o lado receptor compartilham uma chave secreta. O emissor gera um hash HMAC-SHA256 do corpo da requisição usando a chave e envia essa assinatura em um cabeçalho. O receptor faz o hash do mesmo corpo com a mesma chave e compara se as duas assinaturas coincidem.

Se coincidirem, duas coisas ficam garantidas ao mesmo tempo. Como só quem tem a chave consegue gerar a assinatura correta, confirma-se a autenticidade; e como qualquer alteração mínima no corpo muda a assinatura, confirma-se a integridade. A maioria dos webhooks, como os do GitHub, Stripe e Slack, usa esse método.

Você pode testar diretamente no AG HASH. Ative a opção HMAC, informe a chave compartilhada e cole o corpo da requisição para obter o valor HMAC-SHA256. Basta comparar esse valor com a assinatura no cabeçalho da requisição. Na verificação real, recomenda-se uma comparação em tempo constante para evitar ataques de temporização.

Gerar hash com este algoritmo