Webhook-Benachrichtigungen

Webhook-Abonnent hinzufügen

Melden Sie sich bei Instatus unter instatus.com/login an und wählen Sie Ihre Statusseite.

Gehen Sie zu Abonnenten und dann zu Webhook.

Klicken Sie auf Webhook-Abonnent hinzufügen,

Es erscheint ein neues Formular, in dem Sie eingeben können:

  • Webhook-URL
  • E-Mail-Adresse
Webhook-Abonnent

Wir senden Anfragen an Ihre URL in diesem Format, und bei einem Problem mit der URL geht eine E-Mail an die angegebene Adresse.

Sie können Ihrem Webhook-Abonnenten einen Namen geben, indem Sie ihn anklicken und im Formular einen Namen eingeben; über „Abmelden“ können Sie diesen Abonnenten auch löschen.

Überprüfung der Webhook-Payload

Es wird dringend empfohlen, die Webhook-Payload im Webhook-Endpunkt zu validieren.

Wir signieren Webhook-Payloads mit einem Secret und senden die Signatur im Header x-instatus-webhook-signature. Mit dieser Signatur können Sie prüfen, dass der Webhook von Instatus stammt.

Schritte zur Überprüfung des Webhooks

  1. Holen Sie sich Ihr Webhook-Secret aus dem Dashboard (Sie finden es beim Bearbeiten oder Erstellen eines Webhooks und können es dort auch anpassen).
Webhook-Secret
  1. Richten Sie auf Ihrem Server einen neuen Endpunkt ein, der den Webhook empfängt.

  2. Vergleichen Sie die Signatur zur Validierung mit der auf Ihrem Server erzeugten Signatur.

  3. Stimmen die Signaturen überein, verarbeiten Sie den Webhook.

Codebeispiel

import crypto from 'crypto'
import express from 'express'
const app = express()
app.use(express.json())
const WEBHOOK_SECRET = 'your-webhook-secret'
function isVerifiedPayload(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret)
const digest = hmac.update(JSON.stringify(payload)).digest('hex')
return crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(signature))
}
app.post('/endpoint/to/webhook', (req, res) => {
const payload = req.body
const signature = req.header('x-instatus-webhook-signature')
if (!signature) {
return res.status(400).send('Signature missing')
}
if (!isVerifiedPayload(payload, signature, WEBHOOK_SECRET)) {
return res.status(401).send('Invalid signature')
}
// Process the valid webhook
res.status(200).send('Webhook received')
})
app.listen(3000, () => console.log('Server running on port 3000'))

Warum die Überprüfung wichtig ist

  • Sichert die Authentizität: Stellt sicher, dass der Webhook von unserer Plattform stammt.
  • Verhindert Manipulation: Erkennt Änderungen an der Payload.
  • Erhöht die Sicherheit: Schützt vor Replay-Angriffen und unbefugtem Zugriff.