Validador Gratuito de Assinatura HMAC para Webhooks
Calcule e verifique assinaturas HMAC para Stripe, GitHub, Twilio, Shopify, Slack e qualquer provedor de webhook. Usa a Web Crypto API — nada é enviado para nenhum servidor.
Preencha o payload e a chave secreta, depois clique em Validar Assinatura para computar e verificar o HMAC.
Referência Rápida: Formatos de Assinatura de Webhook
Como provedores populares assinam seus webhooks.
| Provedor | Nome do Header | Algoritmo | Encoding | Payload Assinado | Docs |
|---|---|---|---|---|---|
| Stripe | Stripe-Signature | HMAC-SHA256 | hex | {{timestamp}}. | Docs ↗ |
| GitHub | X-Hub-Signature-256 | HMAC-SHA256 | hex | body bruto | Docs ↗ |
| Twilio | X-Twilio-Signature | HMAC-SHA1 | base64 | URL + params ordenados | Docs ↗ |
| Shopify | X-Shopify-Hmac-Sha256 | HMAC-SHA256 | base64 | body bruto | Docs ↗ |
| Slack | X-Slack-Signature | HMAC-SHA256 | hex | v0:{{timestamp}} | Docs ↗ |
O que é HMAC e por que provedores de webhook usam?
HMAC (Hash-based Message Authentication Code) é um mecanismo criptográfico que combina uma chave secreta com uma função hash para produzir uma assinatura única para uma mensagem. Provedores de webhook como Stripe, GitHub, Twilio, Shopify e Slack usam assinaturas HMAC para que você possa verificar que as requisições de webhook recebidas são autênticas e não foram adulteradas durante o trânsito.
Quando um provedor envia um webhook para o seu endpoint, ele calcula um HMAC do corpo da requisição usando uma chave secreta compartilhada e inclui a assinatura resultante em um header HTTP. Sua aplicação então recalcula o HMAC usando a mesma chave e compara com a assinatura recebida. Se coincidirem, você pode confiar que a requisição é genuína.
Como verificar assinaturas de webhook
Verificar uma assinatura de webhook normalmente envolve os seguintes passos:
- Extrair a assinatura do header da requisição recebida (ex:
X-Hub-Signature-256para GitHub,Stripe-Signaturepara Stripe). - Obter o body bruto da requisição exatamente como recebido — não faça parse nem modifique antes da verificação.
- Computar o HMAC usando o algoritmo apropriado (normalmente HMAC-SHA256) com sua chave secreta do webhook.
- Comparar a assinatura computada com a recebida usando uma comparação timing-safe para prevenir ataques de temporização.
- Se as assinaturas coincidirem, processe o webhook. Se não, rejeite a requisição com status
401ou403.
Alguns provedores como Stripe e Slack incluem um timestamp no payload assinado para prevenir ataques de replay. Nesses casos, você também deve verificar se o timestamp é recente (normalmente dentro de 5 minutos).
Por que a validação de assinatura é importante
Sem validação de assinatura, seu endpoint de webhook fica vulnerável a ataques de spoofing. Um atacante pode enviar payloads de webhook forjados para seu servidor, potencialmente disparando ações não autorizadas como confirmações de pagamento falsas, conclusão fraudulenta de pedidos ou corrupção de dados.
A verificação HMAC adequada garante integridade dos dados (o payload não foi alterado), autenticidade (veio do provedor esperado) e, quando combinada com verificação de timestamp, frescor (não é uma requisição antiga reenviada). Esta é uma camada de segurança crítica para qualquer integração de webhook em produção.
Esta ferramenta gratuita ajuda você a testar e debugar sua lógica de validação de assinatura sem escrever código. Cole seu payload e chave secreta, selecione seu provedor e veja instantaneamente se as assinaturas coincidem — tudo computado localmente no seu navegador usando a Web Crypto API nativa.
Precisa monitorar, encaminhar e debugar webhooks em produção? Experimente o HookScope — inspeção e encaminhamento de webhooks em tempo real para times de desenvolvimento.