Assinaturas HMAC
Como confirmar que o pedido veio mesmo do DroidSender e não de outra pessoa.
Todos os pedidos levam o cabeçalho X-DroidSender-Signature, com um HMAC-SHA256 do corpo do pedido usando o segredo do teu webhook. Verificar a assinatura é o que impede alguém que descubra o teu URL de te enviar eventos falsos.
javascript
const crypto = require("crypto");
function assinaturaValida(corpoBruto, assinatura, segredo) {
const esperada = crypto
.createHmac("sha256", segredo)
.update(corpoBruto)
.digest("hex");
// comparacao em tempo constante: um === simples deixa medir o segredo
return crypto.timingSafeEqual(
Buffer.from(esperada),
Buffer.from(assinatura),
);
}Usa o corpo em bruto
A assinatura é calculada sobre o JSON tal como chegou. Se o verificares depois de o converter em objeto e voltar a serializar, os espaços mudam e a assinatura nunca bate certo.