الـ Webhooks تُسلّم إشعارات الدفع الفورية مباشرة لسيرفرك. لكن إذا لم تُنفَّذ بحذر، قد تصبح ثغرة أمنية. إليك خمس ممارسات أساسية.
1. تحقق من التوقيع دائماً
كل Webhook من InzoPay يتضمن header اسمه InzoPay-Signature بتوقيع HMAC-SHA256. تحقق منه دائماً باستخدام Signing Secret الخاص بـ Endpoint قبل معالجة الحدث. راجع دليل التحقق من التوقيع.
2. تحقق من الـ Timestamp
تحقق من أن timestamp الـ Webhook (t=) لا يتجاوز 5 دقائق عن الوقت الحالي. هذا يمنع Replay Attacks حيث يعيد المهاجم إرسال Webhook محفوظ.
3. أعد 200 بسرعة
عالج الـ Webhooks بشكل غير متزامن. أعد استجابة 200 فوراً ثم عالج الحدث في الخلفية. إذا استغرق سيرفرك أكثر من 10 ثوانٍ، ستعتبر InzoPay التسليم فاشلاً.
4. تعامل مع الأحداث المكررة
بسبب إعادة المحاولة، قد يستقبل Endpoint نفس الحدث أكثر من مرة. استخدم معرّف الحدث (event.id) لتنفيذ Idempotency — تجاهل المعالجة إذا سبق لك معالجة ذلك الحدث.
5. استخدم HTTPS فقط
InzoPay تُسلّم الـ Webhooks لـ Endpoints بـ HTTPS فقط. لا تستخدم HTTP في بيئة الإنتاج أبداً.