العودة للمدونة

5 نصائح أمان أساسية للـ Webhooks

الـ 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 في بيئة الإنتاج أبداً.