Pular para o conteúdo

Webhooks e integrações

Confira uma assinatura de webhook

Calcule a assinatura sobre o corpo bruto da requisição, antes de qualquer parse de JSON, e compare em tempo constante. Reserializar o payload muda os bytes, e a assinatura nunca mais vai bater.

Passos

  1. Capture o corpo bruto como bytes. A maioria dos frameworks entrega por padrão um objeto já parseado, o que já é tarde.
  2. Calcule a assinatura sobre exatamente esses bytes com o segredo do seu endpoint.
  3. Compare com uma comparação de tempo constante em vez de igualdade de string.
  4. Só faça o parse do JSON depois que a assinatura for conferida.
  5. Recuse tudo que falhar, e registre o id de entrega em vez do corpo.

Como conferir o resultado

Uma entrega genuína passa na conferência, e o mesmo payload com um caractere mudado não passa.

O que costuma dar errado

  • Fazer parse e reserializar antes de calcular a assinatura.
  • Um middleware de parse que consome o stream antes do seu handler.
  • Um === simples na assinatura, que vaza por tempo.
Isto resolveu o seu problema?

Isto não ajudou

Escreva para nós com plataforma e versão, os passos que seguiu, o resultado esperado e o workspace ou QR code envolvido. Mascare qualquer segredo antes de anexar algo.

Escrever ao suporte