> ## Documentation Index
> Fetch the complete documentation index at: https://docs.killb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Seguridad de Webhook

> Asegura tus endpoints de webhook

## Verificación de Firma

Siempre verifica firmas de webhook usando HMAC SHA-256:

```javascript theme={null}
const crypto = require('crypto');

const verifyWebhookSignature = (payload, signature, secret) => {
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  
  // Usar comparación de tiempo 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: 'Firma inválida' });
  }
  
  // Procesar webhook
  const event = JSON.parse(payload);
  processEvent(event);
  
  res.status(200).json({ received: true });
});
```

## Mejores Prácticas de Seguridad

<AccordionGroup>
  <Accordion title="Solo HTTPS" icon="lock">
    Siempre usa HTTPS para endpoints de webhook
  </Accordion>

  <Accordion title="Secrets Fuertes" icon="key">
    Usa secrets aleatorios con mínimo de 32 caracteres
  </Accordion>

  <Accordion title="Verificar Toda Solicitud" icon="shield-check">
    Nunca omitas la verificación de firma
  </Accordion>

  <Accordion title="Rate Limiting" icon="gauge">
    Protege contra inundación de webhook
  </Accordion>
</AccordionGroup>

## Próximos Pasos

<Card title="Referencia de Eventos" icon="list" href="/es/guides/webhooks/events">
  Ver todos los eventos de webhook
</Card>
