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
- Capture o corpo bruto como bytes. A maioria dos frameworks entrega por padrão um objeto já parseado, o que já é tarde.
- Calcule a assinatura sobre exatamente esses bytes com o segredo do seu endpoint.
- Compare com uma comparação de tempo constante em vez de igualdade de string.
- Só faça o parse do JSON depois que a assinatura for conferida.
- 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