Was Webhooks von normalen API-Calls unterscheidet, und warum die Sicherheitsfrage dabei umgedreht ist.
Bei einem API-Call fragt der Client den Server, bei einem Webhook schickt der Server dem Client unaufgefordert eine Nachricht. Das dreht das Sicherheitsmodell um: Wer garantiert, dass diese Nachricht wirklich vom erwarteten Absender stammt?
Signatur-Validierung
Der Sender generiert eine HMAC-Signatur aus dem Request-Body und einem geteilten Secret, der Empfaenger prueft diese Signatur, nur wer das Secret kennt, kann eine gueltige Signatur erzeugen. Grosse Anbieter wie Stripe oder GitHub nutzen genau dieses Muster ueber einen eigenen Signatur-Header. Wichtig dabei: Timing-Attack-sichere String-Vergleiche verwenden, nicht die naive Gleichheitspruefung.
Retry-Mechanismus
Webhooks scheitern, der empfangende Server ist manchmal nicht erreichbar oder zu langsam. Ein robustes System retried mit Exponential Backoff und landet nach mehreren erfolglosen Versuchen in einer Dead Letter Queue oder loest einen Alert aus. Als Empfaenger empfiehlt sich, schnell mit einem Accepted-Status zu antworten und die eigentliche Verarbeitung asynchron zu erledigen.
Idempotenz
Was passiert, wenn ein Webhook durch einen Retry zweimal ankommt? Der Empfaenger muss idempotent sein: Jede Nachricht traegt eine eindeutige ID, und der Empfaenger speichert, welche IDs bereits verarbeitet wurden.
Checkliste: Signatur-Validierung implementiert, Timing-Attack-sichere Vergleiche verwendet, Idempotenz-Check auf Event-ID, Retry-Mechanismus mit Exponential Backoff, Dead Letter Queue fuer nicht zustellbare Nachrichten, schnelle Response mit asynchroner Verarbeitung.
Ein Beispiel aus der Praxis
Ein Zahlungsanbieter sendete bei einem kurzzeitigen Netzwerkproblem denselben Webhook drei Mal an dasselbe System. Ohne Idempotenz-Pruefung wurde die zugehoerige Bestellung dreifach als bezahlt markiert und dreifach Ware fuer den Versand freigegeben. Der Fehler wurde erst durch eine ungewoehnlich hohe Retourenquote auffaellig. Nach der Einfuehrung einer Pruefung auf bereits verarbeitete Event-IDs verarbeitete das System doppelt oder dreifach ankommende Webhooks korrekt nur noch einmal, unabhaengig davon, wie oft sie tatsaechlich zugestellt wurden.
Webhooks bauen oder absichern? markom.digital entwickelt robuste Webhook-Systeme, sowohl auf Sender- als auch auf Empfaenger-Seite.