Webhook-Signaturen prüfen
Ein gefälschtes Ereignis „Zahlung erfolgreich“ oder eine erfundene Bestellaktualisierung erreicht leicht einen Dienst, der allem vertraut: Signieren Sie ausgehende Benachrichtigungen mit einem gemeinsamen Geheimnis und prüfen Sie eingehende auf gültig, verändert oder abgelaufen. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Das Problem, jeder Nachricht zu vertrauen
Ein Dienst, der jede eingehende Nachricht für wahr hält, lässt sich von jedem täuschen: ein gefälschtes Zahlungsereignis, eine erfundene Bestellaktualisierung oder eine abgefangene Nachricht, die erneut abgespielt wird. Auf der Senderseite gilt das Umgekehrte: Ohne Signatur, auf die Sie verweisen können, kann ein Partner bestreiten, dass Sie ein Ereignis je geschickt haben, und das Support-Ticket lässt sich nicht klären. Wer Ausgehendes signiert und Eingehendes prüft, ermöglicht beiden Seiten den Nachweis, was tatsächlich gesendet wurde und dass unterwegs nichts verändert wurde. Blindes Vertrauen in den Inhalt ist kein tragfähiges Sicherheitsmodell mehr, seit solche Benachrichtigungen Zahlungen und Bestellungen tragen.
Zwei Richtungen mit einem Werkzeug
Zum Senden geben Sie den Inhalt und das gemeinsame Geheimnis an und erhalten eine Signatur, die Sie vor der Zustellung in die Kopfzeilen der Nachricht setzen, etwa als Kopfzeile KIT-Signature wie im Beispiel. Zum Empfangen geben Sie die eingegangene Nachricht und die mitgeschickte Signatur an; das Werkzeug vergleicht beides und meldet gültig, verändert oder abgelaufen. Denken Sie daran, dass Signieren kein Verschlüsseln ist: Der Inhalt bleibt lesbar, die Signatur beweist nur Herkunft und Unverändertheit. Am sichersten prüfen Sie vor der Verarbeitung und weisen alles ab, was scheitert, bevor es Ihre Geschäftslogik erreicht.
Häufige Fragen
Verlässt mein Schlüssel den Browser?
Nein, solange Sie die Funktion im Browser nutzen. Der Schlüssel wird bei jedem Aufruf neu eingegeben und nicht gespeichert.
Muss ich mich anmelden?
Nein. Es gibt derzeit keine Konten – die Nutzung im Browser ist kostenlos und ohne Limit.
Wovor schützt das Signieren von Ereignisbenachrichtigungen?
Davor, dass sich jemand als vertrauenswürdiger Partner ausgibt: eine gefälschte erfolgreiche Zahlung, eine erfundene Bestellaktualisierung oder eine abgefangene, erneut abgespielte Nachricht. Beim Senden belegt die Signatur außerdem, dass ein Ereignis wirklich von Ihnen kam.
Wie prüfe ich eine empfangene Benachrichtigung?
Geben Sie die eingegangene Nachricht und die mitgeschickte Signatur an. Das Werkzeug prüft die Signatur gegen den Inhalt und meldet, ob sie gültig ist, ob die Nachricht verändert wurde oder ob sie abgelaufen ist.
Ist Signieren dasselbe wie Verschlüsseln?
Nein. Eine Signatur verbirgt den Inhalt nicht, er bleibt lesbar; sie beweist, wer ihn gesendet hat und dass er nach dem Signieren nicht verändert wurde, mithilfe eines gemeinsamen Geheimnisses und eines Hashwerts der Nachricht.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/webhook-sign \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"payload":{"event":"ping"},"secret":"whsec_123"}'const res = await fetch("https://api.kit.forhosting.com/dev/webhook-sign", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"payload": {
"event": "ping"
},
"secret": "whsec_123"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/webhook-sign",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"payload": {
"event": "ping"
},
"secret": "whsec_123"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/webhook-sign", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"payload":{"event":"ping"},"secret":"whsec_123"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"payload":{"event":"ping"},"secret":"whsec_123"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/webhook-sign", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"payload": {
"event": "ping"
},
"secret": "whsec_123"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.webhook_sign",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Diese Funktion erzeugt eine HMAC-Signatur für einen ausgehenden Webhook-Payload oder prüft, ob die Signatur eines eingehenden Aufrufs zum vereinbarten Schlüssel passt. Gedacht für alle, die eigene Webhooks absichern oder eingehende Aufrufe eines Anbieters auf Echtheit prüfen möchten, ohne die Signaturprüfung selbst zu programmieren.
Signatur erzeugen für ausgehende Webhooks
Der Empfänger kann damit prüfen, dass die Nachricht tatsächlich von Ihnen stammt und unterwegs nicht verändert wurde. Sie geben den Payload und einen geheimen Schlüssel ein; die Funktion berechnet die HMAC-Signatur, etwa nach dem Verfahren SHA-256, die zusammen mit dem Payload an den Empfänger gesendet wird. Die Signatur wird üblicherweise als zusätzliche Kopfzeile mitgesendet, sodass der eigentliche Payload unverändert bleibt und beim Empfänger ohne Anpassung weiterverarbeitet werden kann.
Eingehende Signatur prüfen
Erhalten Sie selbst einen Webhook, etwa von einem Zahlungsanbieter, fügen Sie Payload, empfangene Signatur und den mit dem Anbieter vereinbarten Schlüssel ein; die Funktion berechnet die erwartete Signatur und zeigt an, ob sie übereinstimmt. Weicht sie ab, sollte der Aufruf verworfen werden – ein häufiges Einfallstor für gefälschte Webhook-Aufrufe. Auch ein abgelaufener Zeitstempel im Payload, den manche Anbieter zusätzlich zur Signatur mitschicken, lässt sich auf Wunsch gegen ein Zeitfenster prüfen.
Der Schlüssel bleibt bei Ihnen
Der geheime Schlüssel wird bei jedem Aufruf neu eingegeben und nicht gespeichert – weder bei uns noch in einer Datenbank.
Kostenlos im Browser, per API automatisierbar
Beide Richtungen – Signatur erzeugen und Signatur prüfen – laufen im Browser kostenlos und ohne Limit. Für den automatisierten Einsatz, etwa um eingehende Webhooks in einer eigenen Anwendung serienmäßig zu prüfen, steht derselbe Aufruf über die API zur Verfügung, für $0.002 pro Ereignis. So lässt sich dieselbe Prüfung, die im Browser manuell getestet wurde, unverändert in den produktiven Empfang eingehender Webhooks übernehmen.
Integrationsbeispiele
Eigene Webhooks vor Manipulation schützen
Die Schneider IT-Systeme GmbH & Co. KG signiert jeden ausgehenden Webhook an ihre Kunden, damit diese die Echtheit der Nachricht prüfen können, bevor sie darauf reagieren.
Eingehende Zahlungsbestätigung verifizieren
Ein Entwickler prüft über die API, ob die Signatur eines eingehenden Webhooks eines Zahlungsanbieters zum vereinbarten Schlüssel passt, bevor eine Bestellung als bezahlt markiert wird.
Signatur manuell nachvollziehen bei einem Fehler
Jonas Weber fügt einen fehlgeschlagenen Webhook-Aufruf im Browser-Widget ein, um herauszufinden, ob ein falscher Schlüssel oder ein verändertes Payload-Format die Ursache für die abgelehnte Signatur war.
Technische Fragen
Welches Signaturverfahren wird verwendet?
HMAC, in der Regel mit SHA-256 – das gängige Verfahren, das auch die meisten großen Webhook-Anbieter einsetzen.
Was mache ich, wenn die Signatur nicht übereinstimmt?
Der Aufruf sollte verworfen werden. Eine abweichende Signatur bedeutet meist einen falschen Schlüssel oder einen veränderten Payload.
Was kostet die Nutzung über die API?
$0.002 pro Ereignis. Im Browser bleibt die Funktion unabhängig davon kostenlos.
Kann ich damit auch eigene ausgehende Webhooks signieren?
Ja. Die Funktion erzeugt ebenso die Signatur für einen Payload, den Sie selbst versenden möchten.
Werden Payload oder Schlüssel bei der API-Nutzung gespeichert?
Nein. Beide werden nur zur Berechnung der jeweiligen Anfrage verwendet und danach nicht gespeichert.