اعلان‌های وب‌هوک

افزودن مشترک وب‌هوک

از instatus.com/login وارد Instatus شوید و سپس صفحه وضعیت خود را انتخاب کنید.

به مشترکان و سپس وب‌هوک بروید.

روی Add webhook subscriber کلیک کنید،

فرم جدیدی ظاهر می‌شود که در آن می‌توانید این‌ها را وارد کنید:

  • نشانی وب‌هوک
  • نشانی ایمیل
مشترک وب‌هوک

ما درخواست‌هایی را با این قالب به نشانی شما می‌فرستیم و هنگام بروز مشکل با نشانی، ایمیلی به نشانی ایمیل مشخص‌شده فرستاده می‌شود.

می‌توانید با کلیک روی مشترک وب‌هوک و تایپ یک نام در فرم، به آن نامی بدهید؛ همچنین می‌توانید با کلیک روی لغو اشتراک این مشترک را حذف کنید.

راستی‌آزمایی محموله وب‌هوک

اکیداً توصیه می‌شود محموله وب‌هوک را در نقطه پایانی وب‌هوک اعتبارسنجی کنید.

ما محموله‌های وب‌هوک را با یک کلید مخفی امضا می‌کنیم و امضا را در هدری به نام x-instatus-webhook-signature قرار می‌دهیم. این امضا به شما امکان می‌دهد تأیید کنید وب‌هوک از Instatus آمده است.

گام‌های راستی‌آزمایی وب‌هوک

۱. کلید مخفی وب‌هوک خود را از داشبورد بگیرید (هنگام ویرایش یا ساخت یک وب‌هوک آن را می‌بینید و می‌توانید همان‌جا سفارشی‌اش کنید).

کلید مخفی وب‌هوک

۲. روی سرور خود یک نقطه پایانی جدید بسازید که وب‌هوک را دریافت کند.

۳. برای اعتبارسنجی، امضا را با امضای تولیدشده توسط سرور خود مقایسه کنید.

۴. اگر امضاها یکسان بودند، وب‌هوک را پردازش کنید.

نمونه کد

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

چرا راستی‌آزمایی مهم است

  • تضمین اصالت: تضمین می‌کند که وب‌هوک از پلتفرم ما آمده است.
  • جلوگیری از دستکاری: تغییرهای محموله را تشخیص می‌دهد.
  • افزایش امنیت: در برابر حملات بازپخش و دسترسی غیرمجاز محافظت می‌کند.