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

# Sicherheit

> Webhook-Signaturen überprüfen, um die Authentizität sicherzustellen

# Webhook-Sicherheit

Jede Webhook-Zustellung enthält eine Signatur, die Sie überprüfen sollten, um sicherzustellen, dass die Anfrage von RxScale stammt und nicht manipuliert wurde.

## Signaturüberprüfung

Jede Webhook-Anfrage enthält einen Signatur-Header. Überprüfen Sie ihn, indem Sie einen HMAC-SHA256-Hash des Anfragekörpers mit Ihrem `signing_secret` berechnen.

### Beispiel (Python)

```python theme={null}
import hmac
import hashlib

def verify_webhook(payload_body: bytes, signature: str, signing_secret: str) -> bool:
    expected = hmac.new(
        signing_secret.encode(),
        payload_body,
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)
```

### Beispiel (Node.js)

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

function verifyWebhook(payloadBody, signature, signingSecret) {
  const expected = crypto
    .createHmac('sha256', signingSecret)
    .update(payloadBody)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
```

## Best Practices

<AccordionGroup>
  <Accordion title="Signaturen immer überprüfen">
    Verarbeiten Sie niemals Webhook-Payloads, ohne vorher die Signatur zu überprüfen. Dies schützt vor gefälschten Anfragen.
  </Accordion>

  <Accordion title="Konstantzeitvergleich verwenden">
    Verwenden Sie immer `hmac.compare_digest` (Python) oder `crypto.timingSafeEqual` (Node.js), um Timing-Angriffe zu verhindern.
  </Accordion>

  <Accordion title="Schnell antworten">
    Senden Sie innerhalb von 5 Sekunden eine `2xx`-Antwort zurück. Wenn Sie aufwändige Verarbeitung durchführen müssen, bestätigen Sie den Webhook zuerst und verarbeiten Sie ihn anschließend asynchron.
  </Accordion>

  <Accordion title="Duplikate behandeln">
    Webhook-Zustellungen können wiederholt werden. Verwenden Sie `event_type` + `timestamp` + `data.uid`, um Ereignisse zu deduplizieren.
  </Accordion>
</AccordionGroup>
