Webhook-aviseringar

Lägg till en webhook-prenumerant

Logga in på Instatus på instatus.com/login och välj sedan din statussida.

Gå till Prenumeranter och sedan Webhook.

Klicka på Lägg till webhook-prenumerant,

Ett nytt formulär visas där du kan ange:

  • Webhook-URL
  • E-postadress
Webhook-prenumerant

Vi skickar anrop till din URL enligt det här formatet, och ett mejl skickas till den angivna e-postadressen när det uppstår problem med URL:en.

Du kan ge din webhook-prenumerant ett namn genom att klicka på den och skriva ett namn i formuläret. Du kan också ta bort prenumeranten genom att klicka på Avsluta prenumeration.

Verifiering av webhook-payload

Vi rekommenderar starkt att du validerar webhook-payloaden i din webhook-endpoint.

Vi signerar webhook-payloader med en hemlighet och skickar med signaturen i en header som heter x-instatus-webhook-signature. Med signaturen kan du verifiera att webhooken kom från Instatus.

Steg för att verifiera en webhook

  1. Hämta din webhook-hemlighet från dashboarden (du hittar den när du redigerar eller skapar en webhook, och du kan även anpassa den där).
Webhook-hemlighet
  1. Skapa en ny endpoint på din server som tar emot webhooken.

  2. Jämför signaturen med den signatur din server genererar för att validera den.

  3. Om signaturerna stämmer överens kan du behandla webhooken.

Kodexempel

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'))

Varför verifiering är viktigt

  • Säkerställer äkthet: Garanterar att webhooken kommer från vår plattform.
  • Förhindrar manipulation: Upptäcker ändringar i payloaden.
  • Ökar säkerheten: Skyddar mot replay-attacker och obehörig åtkomst.