# Validador de assinatura de webhook.

- URL canónico: https://www.broadnet.me/pt/tools/webhook-signature-validator
- Idioma: pt
- Última atualização: 2026-10-21
- Editor: BroadNet (https://www.broadnet.me)
- Versão Markdown da página, gerada a partir da página publicada.

HMAC · Web Crypto · executa no seu navegador

Cole um payload de webhook, o seu segredo de assinatura e a assinatura recebida. Isto calcula o HMAC (SHA-256 ou SHA-1) com a Web Crypto API e diz se corresponde. Genérico — funciona com qualquer webhook assinado com HMAC. Nada sai do seu dispositivo.

Use exatamente os bytes recebidos — reserializar o JSON altera o hash.

Algoritmo

Verificação

O HMAC foi calculado abaixo. Cole uma assinatura para verificar se corresponde.

HMAC-SHA-256 calculado (hex)

A calcular no seu navegador…

Tudo é executado localmente através da Web Crypto API — o payload e o segredo nunca saem desta página. Prefira sempre um segredo de teste a um segredo de produção real em qualquer ferramenta online.

A resposta curta

## O que é uma assinatura de webhook?

Uma assinatura de webhook é um hash com chave — um **HMAC** — do corpo da requisição, calculado pelo remetente com um segredo partilhado por ambas as partes e enviado junto com a requisição, normalmente num cabeçalho. Para a verificar, recalcula-se o HMAC sobre o corpo bruto exato com o mesmo segredo e algoritmo e compara-se. Uma correspondência prova que o payload veio de quem detém o segredo e não foi alterado em trânsito. Autentica e protege a integridade — não cifra o payload.

### Como verificar corretamente uma assinatura

1. Capture o **corpo bruto da requisição** antes de qualquer parsing. A reserialização de JSON reordena chaves e espaços, o que altera o hash.
2. Execute o HMAC com o segredo partilhado e a função de hash do remetente (SHA-256 na maioria das APIs modernas).
3. Codifique o resultado em hexadecimal e compare-o com o cabeçalho da assinatura, ignorando qualquer prefixo de esquema como sha256=.
4. Em produção, compare com uma função de igualdade de **tempo constante** para evitar canais laterais de temporização, e rejeite requisições antigas usando o carimbo de tempo assinado pelo fornecedor.

## Perguntas frequentes

**O que é uma assinatura de webhook?**

Uma assinatura de webhook é um hash com chave (HMAC) do corpo da requisição, calculado pelo remetente com um segredo partilhado e enviado num cabeçalho. O destinatário recalcula o HMAC sobre o corpo bruto exato com o mesmo segredo e compara — se corresponderem, o payload é autêntico e não foi modificado. Isso prova a origem e a integridade sem cifrar o payload.

**Como verifico uma assinatura HMAC de webhook?**

Pegue no corpo bruto exato da requisição (antes de qualquer parsing ou reserialização JSON), execute o HMAC com o seu segredo partilhado e o algoritmo de hash do remetente (normalmente SHA-256), e codifique o resultado em hexadecimal. Compare-o com o cabeçalho da assinatura, ignorando prefixos como 'sha256='. Se forem iguais, a assinatura é válida.

**Porque a minha assinatura não corresponde?**

As causas habituais são: o corpo foi reserializado e por isso difere byte a byte do que foi assinado; o segredo ou algoritmo de hash errado; o fornecedor assina uma string que também inclui um carimbo de tempo ou prefixo de versão; ou uma incompatibilidade de codificação hex versus base64. Faça sempre o hash dos bytes brutos exatos tal como recebidos.

**É seguro colar aqui um segredo real?**

O cálculo é executado inteiramente no seu navegador através da Web Crypto API — nada é enviado ou registado. Como hábito geral, prefira ainda assim um segredo de teste a um segredo de produção real em qualquer ferramenta online, e rode qualquer segredo que suspeite ter sido exposto.

**Devo usar SHA-256 ou SHA-1?**

Use HMAC-SHA-256. O SHA-1 só é oferecido aqui porque alguns fornecedores legados ainda enviam assinaturas SHA-1. As novas integrações devem padronizar-se em SHA-256.

**A assinatura cifra o meu payload?**

Não. Uma assinatura HMAC autentica o payload e prova que não foi adulterado, mas o corpo continua a ser enviado em texto simples. Use HTTPS (TLS) para confidencialidade; a assinatura diz respeito à origem e à integridade, não ao sigilo.

**Porque comparar em tempo constante em produção?**

Uma comparação de strings ingénua pode revelar quantos caracteres iniciais corresponderam através de diferenças de tempo minúsculas, algo que um atacante poderia explorar para forjar uma assinatura. Em produção, compare com uma função de tempo constante como crypto.timingSafeEqual. Esta ferramenta no navegador compara diretamente porque não há um atacante remoto para cronometrar.

[API de SMS REST + SMPP 3.4, autenticação por token Bearer, webhooks de entrega.](https://www.broadnet.me/pt/products/sms-api) [Gateway SMSC SMSC de nível operadora sobre SMPP + SS7.](https://www.broadnet.me/pt/operators/smsc-gateway) [Centro de desenvolvedores Início rápido, TypeScript SDK, referências e ferramentas.](https://www.broadnet.me/pt/developers)

## Verifique qualquer webhook assinado com HMAC.

Este validador funciona com qualquer fornecedor que assine webhooks com HMAC. Quando estiver pronto para desenvolver, a BroadNet oferece uma API REST com token Bearer, webhooks de relatórios de entrega e binds SMPP 3.4 diretos.

[Centro de desenvolvedores](https://www.broadnet.me/pt/developers) [API de SMS](https://www.broadnet.me/pt/products/sms-api)
