Webhook-Signaturen prüfen
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.
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.
Signatur erzeugen für ausgehende Webhooks
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. Der Empfänger kann damit prüfen, dass die Nachricht tatsächlich von Ihnen stammt und unterwegs nicht verändert wurde. 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. Im Browser verlässt weder der Schlüssel noch der Payload die Seite: Die Berechnung läuft vollständig lokal im Widget, ohne Übertragung an einen Server. Das ist bewusst so gebaut, denn ein Signaturschlüssel, der irgendwo gespeichert wird, verliert seinen Zweck als Geheimnis, sobald ein Dritter Zugriff darauf erhält.
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.
Anwendungsfälle
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.
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.
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.
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 '{"input":"…"}'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({
"input": "…"
})
});
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={
"input": "…"
},
)
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" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
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
{
"input": "…"
}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. |