WEBHOOK_SECRET
Ein WEBHOOK_SECRET ist ein geteilter geheimer Schlüssel, der zur kryptografischen Signierung von Webhook-Anfragen verwendet wird. Er ermöglicht es dem Empfänger, die Authentizität und Integrität der erhaltenen Daten zu verifizieren.
Ausführliche Erklärung
Webhooks sind HTTP-Anfragen, mit denen Systeme sich automatisch über Ereignisse informieren – etwa wenn eine Zahlung eingeht, ein Formular abgesendet oder eine Aufgabe abgeschlossen wurde. Da Webhook-Endpunkte öffentlich erreichbar sein müssen, besteht das Risiko, dass Angreifer gefälschte Anfragen senden. Hier kommt der WEBHOOK_SECRET ins Spiel.
Der WEBHOOK_SECRET ist ein kryptografischer Schlüssel, den Sender und Empfänger vorab vereinbaren und sicher verwahren. Beim Versenden einer Webhook-Anfrage berechnet das sendende System eine HMAC-Signatur (Hash-based Message Authentication Code) aus dem Inhalt der Nachricht und dem Secret. Diese Signatur wird als HTTP-Header mitgeschickt. Der Empfänger führt dieselbe Berechnung durch und vergleicht beide Signaturen: Stimmen sie überein, ist die Nachricht authentisch und unverändert.
Für Unternehmen bedeutet dies konkret: Automatisierte Prozesse wie Benachrichtigungen von Zahlungsanbietern, CRM-Systemen oder Cloud-Diensten lassen sich absichern, ohne dass bei jedem Ereignis manuelle Authentifizierung nötig wäre. Der WEBHOOK_SECRET sollte eine zufällige Zeichenkette mit hoher Entropie sein – typischerweise mindestens 32 Zeichen – und niemals im Quellcode oder in öffentlichen Repositories hinterlegt werden. Best Practice ist die Speicherung als Umgebungsvariable oder in einem dedizierten Secrets-Management-System. Wichtig ist außerdem die regelmäßige Rotation des Secrets, insbesondere wenn Teammitglieder mit Zugriff das Unternehmen verlassen oder ein Sicherheitsvorfall vermutet wird.
Praxisbeispiel
Eine österreichische Steuerberatungskanzlei mit 12 Mitarbeitenden nutzt eine cloudbasierte Dokumentenmanagement-Plattform. Sobald ein Mandant ein Dokument hochlädt, sendet die Plattform einen Webhook an das interne System der Kanzlei. Dort wird mit dem WEBHOOK_SECRET die mitgesendete HMAC-SHA256-Signatur geprüft. Nur bei erfolgreicher Verifikation wird das Dokument in die Akte übernommen und der zuständige Berater benachrichtigt. So ist sichergestellt, dass keine gefälschten Upload-Benachrichtigungen das System manipulieren.
Code-Beispiel
// Node.js: Webhook-Signatur verifizieren
const crypto = require('crypto');
const WEBHOOK_SECRET = process.env.WEBHOOK_SECRET;
app.post('/webhook', (req, res) => {
const payload = req.rawBody;
const signature = req.get('X-Signature-SHA256');
const hmac = crypto.createHmac('sha256', WEBHOOK_SECRET);
const digest = 'sha256=' + hmac.update(payload).digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(signature))) {
return res.status(401).send('Unauthorized');
}
// Webhook authentisch – verarbeiten
res.json({ received: true });
});