Assinatura de webhook
Um falso evento de pagamento aprovado ou uma atualização de pedido forjada chega fácil a um serviço que confia em tudo: assine suas notificações de saída com um segredo compartilhado e confira as de entrada, que voltam como válidas, adulteradas ou expiradas. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
confira o HMAC sem expor o segredo
O problema de confiar em qualquer mensagem
Um serviço que aceita como verdadeira qualquer mensagem que chega pode ser enganado por qualquer pessoa: um falso evento de pagamento aprovado, uma atualização de pedido forjada ou a repetição de uma mensagem capturada. Do lado de quem envia acontece o contrário: sem uma assinatura para mostrar, um parceiro pode negar que você enviou um evento, e o chamado de suporte fica sem como ser resolvido. Assinar o que sai e verificar o que entra permite que os dois lados provem o que foi enviado de fato e que nada mudou no caminho. Por isso confiar no conteúdo sem conferir deixou de ser um modelo de segurança viável quando essas notificações passaram a sustentar pagamentos e pedidos.
Dois sentidos com uma só ferramenta
Para enviar, informe o conteúdo e o segredo compartilhado: você recebe uma assinatura que vai nos cabeçalhos da mensagem antes da entrega, como o cabeçalho KIT-Signature do exemplo. Para receber, informe a mensagem que chegou e a assinatura que veio junto: a ferramenta compara os dois e diz se é válida, se foi adulterada ou se expirou. Lembre que assinar não é criptografar; o conteúdo continua legível e a assinatura só prova quem enviou e que nada mudou depois de assinado. O mais seguro é verificar antes de processar e recusar o que falhar antes que chegue à lógica do seu negócio.
Tudo acontece na sua tela
Colar um segredo de produção em site aleatório é pesadelo de segurança — e é exatamente por isso que esta ferramenta roda inteira no navegador. Grátis, sem cadastro e sem limite de verificações.
Casos de uso
Homologação de integração
Antes de subir a integração para produção, o time gera assinaturas de teste na tela e confere se o código do receptor valida corretamente — inclusive os casos de assinatura errada, que devem ser rejeitados.
Perguntas frequentes
Posso colar um segredo de produção aqui?
O cálculo roda no seu navegador e o segredo não é transmitido — dá para auditar na aba de rede. Ainda assim, a disciplina de segurança manda: se preferir, teste com um segredo de homologação e rotacione qualquer credencial que já tenha vazado em outro lugar.
A assinatura não bate. Por onde começo?
Confira nessa ordem — resolve a maioria dos casos.
Qual algoritmo de HMAC é usado?
O importante é calcular dos dois lados com o mesmo algoritmo, o mesmo segredo e o mesmo corpo.
O uso no navegador é grátis até quando?
É grátis por desenho, não por promoção: o processamento acontece na sua máquina, então não custa nada para ninguém.
Assinar é o mesmo que criptografar?
Não. A assinatura não esconde o conteúdo, que continua legível; ela prova quem enviou e que nada mudou depois da assinatura, usando um segredo compartilhado e um resumo criptográfico da mensagem.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
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.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/webhook-sign \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"payload":{"event":"ping"},"secret":"whsec_123"}'const res = await fetch("https://api.kit.forhosting.com/dev/webhook-sign", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"payload": {
"event": "ping"
},
"secret": "whsec_123"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/webhook-sign",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"payload": {
"event": "ping"
},
"secret": "whsec_123"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/webhook-sign", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"payload":{"event":"ping"},"secret":"whsec_123"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"payload":{"event":"ping"},"secret":"whsec_123"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/webhook-sign", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"payload": {
"event": "ping"
},
"secret": "whsec_123"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.webhook_sign",
"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.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Ferramenta para gerar e conferir assinaturas HMAC de webhooks: cole o payload, o segredo e a assinatura recebida e veja na hora se batem — tudo dentro do navegador, sem o segredo sair da página. Via API, o mesmo mecanismo assina os eventos que o seu sistema envia, a US$ 0,002 por evento.
Por que conferir a assinatura do webhook
Qualquer um que descubra a URL do seu endpoint consegue mandar um POST para ela. A assinatura HMAC é o que separa um evento legítimo de um payload forjado: o emissor assina o corpo com um segredo compartilhado e o receptor recalcula e compara. Endpoint que aceita webhook sem conferir assinatura aceita, na prática, pedido falso, pagamento falso e cancelamento falso — de quem quiser enviar.
Tudo acontece na sua tela
O payload, o segredo e o cálculo do HMAC não saem da página: nada é transmitido a servidor nenhum, e você pode conferir isso na aba de rede do navegador.
Assinar os seus próprios eventos via API
Seus clientes ganham um jeito de validar a autenticidade do que recebem, e você entrega o padrão de segurança que os grandes gateways praticam. Se o seu sistema envia webhooks para clientes, assine cada evento: a API recebe o payload, aplica o HMAC com o seu segredo e devolve o evento assinado, pronto para envio — US$ 0,002 por evento, em dólares americanos.
Casos de integração
Webhook do gateway rejeitado
O endpoint da loja rejeita os eventos do gateway de pagamento com “assinatura inválida” e ninguém sabe se o bug é do lado de lá ou de cá. Colando payload, segredo e assinatura na ferramenta, o dev descobre em minutos de que lado está o problema — sem expor o segredo em log nem em site de terceiros.
Plataforma que envia webhooks
Uma plataforma brasileira de agendamento envia webhooks aos sistemas dos assinantes. Assinando cada evento via API, ela oferece aos clientes a verificação de autenticidade — item cada vez mais comum em checklist de segurança corporativo.
Perguntas técnicas
Isso me deixa em dia com a LGPD?
Assinatura de webhook é integridade e autenticidade, não conformidade completa. Mas ajuda no que lhe cabe: na versão do navegador, payloads e segredos não saem da sua tela — não há tratamento de dados por terceiros nessa etapa.