100% client-side — Seus dados nunca saem do seu navegador

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}}.{{body}} 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}}:{{body}} 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:

  1. Extrair a assinatura do header da requisição recebida (ex: X-Hub-Signature-256 para GitHub, Stripe-Signature para Stripe).
  2. Obter o body bruto da requisição exatamente como recebido — não faça parse nem modifique antes da verificação.
  3. Computar o HMAC usando o algoritmo apropriado (normalmente HMAC-SHA256) com sua chave secreta do webhook.
  4. Comparar a assinatura computada com a recebida usando uma comparação timing-safe para prevenir ataques de temporização.
  5. Se as assinaturas coincidirem, processe o webhook. Se não, rejeite a requisição com status 401 ou 403.

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.