security // Webhook SecurityESTUDO

Validação HMAC de Webhook — Padrão Canônico

Valide que o body recebido foi assinado pelo emissor esperado antes de processar efeitos colaterais.

webhookhmacsecuritysignature
Context Pack →Abrir Workspace →
Trust & provenanceSTUDY
Nível de evidênciaSTUDYFontes oficiais0Outras fontes0Última verificação2026-10-05

O nível de evidência descreve minha experiência com o conteúdo. Fonte oficial descreve contrato/documentação da plataforma. Observação de produção não deve ser tratada automaticamente como limite oficial.

EvidênciaESTUDO
Dificuldadeintermediário
Verificado2026-10-05
Use quando

O provider suporta assinatura de request e você precisa detectar adulteração/autenticidade.

import crypto from 'node:crypto';

function validSignature(rawBody, received, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(expected, 'hex'),
    Buffer.from(received, 'hex')
  );
}
Por que funciona

O receiver recalcula o MAC com o secret compartilhado e compara com a assinatura recebida.

Notas operacionais

Use o raw body exatamente como o provider exige antes de parsear/re-serializar JSON.

Rejeite assinatura ausente/malformada antes da lógica de negócio.