Todos os sistemas operando

Bem-vindo à evob.
Como podemos ajudar?

Tudo que você precisa para tirar o máximo da sua plataforma — guias, vídeos, dúvidas frequentes e suporte humano.

Comece por aqui

Trilha sob medida pra você

Roteiros passo a passo conforme seu papel na plataforma.

Explore por área

Tudo que sua plataforma faz, organizado em pastinhas.

Os mais buscados

Atualizados recentemente

Não achou o que procurava?

Nosso time de Customer Success responde em até 30 minutos nos planos Pro e superiores.

Segurança e autenticação de webhooks (HMAC)

HMAC autentica que o webhook veio da evob — impede dados forjados no receptor.

Onde acessar

Plataforma > Configurações > Webhooks > [webhook] > Chave secreta

Por que validar a autenticidade

Qualquer pessoa que descubra a URL do seu receptor pode enviar um POST forjado simulando um evento da evob — por exemplo, fingir uma compra aprovada para acionar uma matrícula fraudulenta no CRM.

A validação HMAC resolve isso: a evob assina cada payload com uma chave secreta compartilhada. O receptor verifica a assinatura antes de processar — se não bater, o payload é rejeitado.


Como funciona o HMAC

Na evob (ao enviar):
  1. Gera a assinatura: `HMAC-SHA256(payload_body, chave_secreta)`
  2. Inclui a assinatura no header da requisição: `X-Evob-Signature: sha256=XXXXXXXXX`
No receptor (ao receber):
  1. Lê o header `X-Evob-Signature`
  2. Recalcula o HMAC com o body recebido e a chave secreta
  3. Compara as duas assinaturas — se forem iguais, o payload é autêntico
  4. Se forem diferentes, rejeita com HTTP 401

Configurar a chave secreta

  1. Acesse Webhooks > [webhook] > Chave secreta
  2. Gere uma chave aleatória (mínimo 32 caracteres) ou use a gerada pelo sistema
  3. Copie a chave — ela é exibida apenas uma vez
  4. Configure a mesma chave no receptor para que ele possa verificar a assinatura

Código de verificação no receptor

Node.js:

```javascript const crypto = require('crypto')

function verificarAssinatura(payload, signature, secret) { const calculado = 'sha256=' + crypto .createHmac('sha256', secret) .update(payload, 'utf8') .digest('hex') return crypto.timingSafeEqual( Buffer.from(calculado), Buffer.from(signature) ) } ```

Python:

```python import hmac, hashlib

def verificar_assinatura(payload, signature, secret): calculado = 'sha256=' + hmac.new( secret.encode(), payload, hashlib.sha256 ).hexdigest() return hmac.compare_digest(calculado, signature) ```

Use `timingSafeEqual` / `compare_digest` em vez de `==` para evitar ataques de timing.


Boas práticas

✅ Faça

  • Valide a assinatura HMAC em todos os endpoints que recebem webhooks da evob — sem validação, qualquer requisição POST é aceita, incluindo dados forjados
  • Use `compare_digest` ou equivalente seguro para comparar assinaturas — comparação simples com `==` é vulnerável a timing attacks
  • Rotacione a chave secreta periodicamente e quando houver suspeita de comprometimento — após trocar a chave no admin, atualize imediatamente no receptor

❌ Não faça

  • Expor a chave secreta em código-fonte versionado (Git) — use variáveis de ambiente para armazenar a chave
  • Ignorar erros de assinatura em produção — um payload com assinatura inválida deve ser rejeitado com 401 e o incidente logado; pode indicar tentativa de ataque
  • Validar apenas o header sem verificar o body — a assinatura cobre o body inteiro; validar só parte dele não garante integridade

Erros comuns

"A validação HMAC está sempre falhando mesmo com a chave correta"

O body da requisição precisa ser lido como raw bytes, não como JSON parseado. Frameworks que parsam o JSON antes da validação alteram o body (espaços, ordem de campos) e invalidam a assinatura. Leia o raw body antes de parsear.

"Onde encontro a chave secreta se perdi?"

A chave não é exibida novamente após a criação. Acesse Webhooks > [webhook] > Chave secreta > Gerar nova chave — isso invalida a chave antiga e gera uma nova. Atualize o receptor com a nova chave imediatamente.

"O Zapier não suporta validação HMAC — como proceder?"

Zapier não expõe o raw body para validação de assinatura em triggers por webhook padrão. Use uma URL secreta como mitigação: gere uma URL com token único para o trigger do Zapier e mantenha-a confidencial. Para segurança máxima, use um servidor intermediário que valida HMAC antes de repassar para o Zapier.

"Posso usar a mesma chave secreta para todos os webhooks?"

Tecnicamente sim, mas não é recomendado — uma chave comprometida afetaria todos os webhooks. Use uma chave distinta por webhook ou por sistema receptor.


Próximos passos


Foi útil este artigo? 👍 👎 Falar com CS (em produção) · Pergunte ao Vob 🤖 (em produção) Última atualização: 2026-05-07


Este artigo foi útil?
Sugerir uma melhoria
Ainda com dúvida?

Nosso time responde em até 30 minutos nos planos Pro e superiores.

✎ Revisão Navegue para um artigo
✨ Gemini — Editor de Ajuda

⚙ Configurações — Modo Revisão

Bunny Storage API Key (evob-docs)
Para salvar artigos diretamente no CDN
Gemini API Key
Chaves salvas no localStorage deste browser