امنیت Webhook پیامک؛ امضای HMAC و جلوگیری از پردازش تکراری

امنیت Webhook ۷ دقیقه مطالعه به‌روزرسانی: ۱۴۰۵/۰۴/۰۳

Endpoint عمومی Webhook باید بتواند اصالت درخواست را بررسی کند و در برابر تحویل تکراری رفتار امن و قابل پیش‌بینی داشته باشد.

امضای HMAC چه چیزی را ثابت می‌کند؟

فرستنده با secret مشترک از بدنه خام درخواست امضا می‌سازد. مقصد همان محاسبه را انجام می‌دهد و با مقایسه امن می‌سنجد که بدنه در مسیر تغییر نکرده و از منبع مورد انتظار آمده است.

چرا باید بدنه خام بررسی شود؟

تبدیل JSON به آرایه و ساخت دوباره آن ممکن است فاصله یا ترتیب را تغییر دهد. امضا باید روی همان raw body دریافتی محاسبه و با X-Wikipayam-Signature مقایسه شود.

Idempotency با Delivery ID

شبکه یا retry می‌تواند یک رویداد را بیش از یک‌بار تحویل دهد. ذخیره X-Wikipayam-Delivery با محدودیت یکتا باعث می‌شود عملیات حساس فقط یک‌بار اجرا شود.

پاسخ‌دهی سریع و پردازش پس‌زمینه

پس از اعتبارسنجی و ثبت Delivery ID، بهتر است پاسخ 2xx سریع برگردد و کار سنگین در صف داخلی انجام شود. پاسخ 3xx موفق نیست و می‌تواند تلاش مجدد ایجاد کند.

جمع‌بندی و قدم بعدی

برای انتخاب راهکار مناسب، ابتدا هدف ارتباط پیامکی را مشخص کنید: اطلاع‌رسانی، تبلیغات، احراز هویت، اتصال نرم‌افزار یا تحلیل کمپین. سپس از صفحه امکانات، مستندات یا فرم تماس مسیر مناسب را ادامه دهید.

سوالات پرتکرار

Secret وب‌هوک کجا نگهداری شود؟

در متغیر محیطی یا secret manager و خارج از کد و مخزن عمومی نگهداری شود.

برای مقایسه امضا از چه روشی استفاده کنیم؟

از مقایسه زمان‌ثابت مانند hash_equals استفاده کنید.

آیا دریافت دوباره یک Delivery ID خطاست؟

ممکن است نتیجه تلاش مجدد باشد؛ بدون اجرای دوباره عملیات، یک پاسخ موفق کنترل‌شده برگردانید.

مسیرهای پیشنهادی بعد از این مقاله

اگر موضوع این مقاله به نیاز شما نزدیک است، مسیر بعدی را از امکانات، راهکارها یا ثبت‌نام در پنل ادامه دهید.