ForHosting KIT · Ferramentas para dev

Como verificar a assinatura de webhook com HMAC

A verificação de assinaturas de webhook costuma falhar nas interfaces: o framework altera o corpo, o cabeçalho é interpretado sem rigor ou uma comparação comum revela informações de tempo.

● BetaGrátis · no seu navegador
Use pelo WebAPIE-mailTelegramApp em breve

Esta capacidade converte o algoritmo HMAC e o cabeçalho do provedor em uma lista precisa e ordenada. Ela não precisa do payload, do segredo nem da assinatura. Use o resultado ao implementar ou revisar o endpoint e confirme formato de data, codificação e tolerância a repetição na documentação oficial.

Comece pelos bytes assinados pelo provedor

Preserve exatamente os bytes recebidos antes de interpretar o corpo. Analisar e serializar JSON novamente pode alterar espaços, ordem, escapes, Unicode ou quebras de linha. Leia o cabeçalho indicado sem diferenciar maiúsculas no nome, mas valide o valor com rigor. O provedor pode enviar um resumo simples ou incluir versão, data e várias assinaturas. Siga a gramática documentada, rejeite valores ausentes, vazios, duplicados ou malformados e mantenha o segredo em um gerenciador protegido.

Reconstrua, calcule e compare na ordem correta

Reconstrua exatamente a mensagem assinada: ela pode ser apenas o corpo bruto ou uma data, um separador e o corpo. Respeite a ordem e a codificação documentadas. Calcule o HMAC com o segredo e o algoritmo normalizado e codifique o resultado conforme o provedor. Decodifique as assinaturas em bytes de igual tamanho e use comparação em tempo constante. Codificação inválida ou tamanhos diferentes significam falha; não corte nem complete valores.

Trate a criptografia como parte da aceitação

Um HMAC correspondente prova conhecimento do segredo, mas não garante que a mensagem seja recente ou inédita. Aplique a tolerância de data recomendada, registre identificadores aceitos e torne o processamento idempotente. Faça a rotação de segredos conforme a sobreposição documentada. Rejeite antes de enfileirar trabalho, devolva erro genérico e registre somente códigos seguros. Teste corpos alterados, datas vencidas, cabeçalhos inválidos, segredos errados e eventos repetidos.

Implementar um novo endpoint

Converta algoritmo e cabeçalho do provedor em uma lista revisável antes de programar.

Revisar uma integração existente

Confira se captura, HMAC, comparação segura e proteção contra repetição estão na sequência correta.

Preparar testes de segurança

Crie testes negativos para cabeçalhos ausentes, corpos alterados, resumos inválidos, datas vencidas e repetições.

Esta ferramenta verifica um webhook real?

Não. Ela produz etapas e nunca solicita payload, segredo ou assinatura.

Quais algoritmos são reconhecidos?

HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 e HMAC-SHA512. Outro algoritmo gera erro de entrada.

Por que preservar o corpo bruto?

Interpretar e serializar novamente pode alterar os bytes e invalidar uma assinatura correta.

Um HMAC válido impede repetição?

Não. Valide a data assinada e elimine identificadores duplicados quando disponíveis.

Devo enviar o segredo do webhook?

Não. Informe apenas algoritmo e cabeçalho; mantenha o segredo no ambiente protegido.

Quanto custa a solicitação de API?

Cada solicitação custa US$ 0,002. A implementação determinística roda no navegador sem enviar segredos.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/security/webhook-signature-verify-steps

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/security/webhook-signature-verify-steps \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"algorithm":"HMAC-SHA256","header_name":"X-Webhook-Signature"}'
{
  "algorithm": "HMAC-SHA256",
  "header_name": "X-Webhook-Signature"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "security.webhook_signature_verify_steps",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Ver a documentação completa do KIT →