Pular para o conteúdo principal

Verificação de Assinatura

Sempre verifique assinaturas de webhook usando HMAC SHA-256:
const crypto = require('crypto');

const verifyWebhookSignature = (payload, signature, secret) => {
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  
  // Usar comparação de tempo constante
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expectedSignature)
  );
};

app.post('/webhooks/killb', express.raw({type: 'application/json'}), (req, res) => {
  const signature = req.headers['x-signature-sha256'];
  const payload = req.body.toString();
  
  if (!verifyWebhookSignature(payload, signature, WEBHOOK_SECRET)) {
    return res.status(401).json({ error: 'Assinatura inválida' });
  }
  
  // Processar webhook
  const event = JSON.parse(payload);
  processEvent(event);
  
  res.status(200).json({ received: true });
});

Melhores Práticas de Segurança

Sempre use HTTPS para endpoints de webhook
Use secrets aleatórios com mínimo de 32 caracteres
Nunca pule a verificação de assinatura
Proteja contra flooding de webhook

Próximos Passos

Referência de Eventos

Ver todos os eventos de webhook