התראות Webhook

הוספת מנוי webhook

התחברו ל‑Instatus מinstatus.com/login ובחרו את דף הסטטוס שלכם.

עברו אל מנויים ואז אל Webhook.

לחצו על הוספת מנוי webhook,

יופיע טופס חדש שבו אפשר להזין:

  • כתובת Webhook
  • כתובת אימייל
מנוי Webhook

אנחנו נשלח בקשות לכתובת שלכם לפי הפורמט הזה, ואימייל יישלח לכתובת האימייל שציינתם כשתהיה תקלה עם הכתובת.

אפשר לתת שם למנוי ה‑webhook שלכם על ידי לחיצה עליו והקלדת שם בטופס. אפשר גם למחוק את המנוי הזה בלחיצה על ביטול מנוי.

אימות מטען ה‑Webhook

מומלץ מאוד לאמת את מטען ה‑webhook בנקודת הקצה שלכם.

אנחנו חותמים על מטעני webhook עם סוד וכוללים את החתימה בכותרת בשם x-instatus-webhook-signature. החתימה הזו מאפשרת לכם לאמת שה‑webhook הגיע מ‑Instatus.

שלבים לאימות ה‑Webhook

  1. שלפו את סוד ה‑Webhook שלכם מהדאשבורד (אפשר למצוא אותו בעת עריכה או יצירה של webhook, ואפשר גם להתאים אותו שם).
סוד ה‑Webhook
  1. צרו נקודת קצה חדשה בשרת שלכם שתקבל את ה‑webhook.

  2. השוו את החתימה לחתימה שנוצרה בשרת שלכם כדי לאמת.

  3. אם החתימות תואמות, עבדו את ה‑webhook.

דוגמת קוד

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

למה האימות חשוב

  • מבטיח מקוריות: מוודא שה‑webhook מגיע מהפלטפורמה שלנו.
  • מונע שינויים: מזהה שינויים במטען.
  • משפר אבטחה: מגן מפני התקפות שחזור וגישה לא מורשית.