مقال
مشاريع

التحقق من توقيع الويبهوك ومنع إعادة الإرسال

20 أكتوبر 2026Majed Alandajani

الويبهوك عنوان عام على الإنترنت يستقبل الإشعارات، وأي شخص يعرف هذا العنوان يستطيع أن يرسل إليه ما يشاء.

وحين يكون النظام نظام مدفوعات تتضح الخطورة: من يعرف العنوان يستطيع أن يخبر نظامك أن فاتورة ما قد سُددت.

الطبقة الأولى: التوقيع

يرفق المزود مع كل إشعار توقيعا محسوبا على محتوى الرسالة بمفتاح سري لا يعرفه سواكما.

يعيد نظامك الحساب نفسه على ما وصل فعلا. إذا تطابق التوقيعان فالرسالة صادرة من المزود ولم تتغير في الطريق، وإذا اختلفا رفضتها دون نقاش.

المصيدة الأولى: الترتيب

احسب التوقيع على الجسم الخام كما وصل تماما، قبل أي تحليل أو إعادة تسلسل. تحليل JSON ثم إعادة تسلسله يغير ترتيب الحقول والمسافات، فيخرج التوقيع مختلفا وتبدأ برفض رسائل صحيحة.

المصيدة الثانية: المقارنة

قارن بين التوقيعين بطريقة لا يتأثر زمنها بموضع أول اختلاف. المقارنة العادية تتوقف عند أول حرف مختلف، وزمن خروجها هذا يسرب معلومة.

الطبقة الثانية: منع الإعادة

التوقيع الصحيح يبقى صحيحا إلى الأبد، ومن التقط رسالة سليمة يستطيع إعادة إرسالها مئة مرة.

والعلاج أن يحمل كل إشعار معرفا فريدا يخزنه نظامك عند المعالجة، فإذا وصل معرف سبق تخزينه تجاهلت الإشعار كله.

وموضع هذا القيد قاعدة البيانات لا الكود: فهرس فريد على المعرف. حتى لو وصلت رسالتان في اللحظة نفسها سترفض القاعدة الثانية منهما، أما الفحص المكتوب في الكود فقد يمررهما معا.

ما تعلّمته عن إعادة المحاولة

يعيد المزودون إرسال الإشعار كلما غاب عنهم الرد الناجح، ولهذا سيستقبل نظامك الإشعار نفسه عدة مرات في التشغيل الطبيعي. فمنع الإعادة ضرورة لصحة الحسابات حتى في غياب أي مهاجم.

اقرأ أيضا

عندك مشروع في بالك؟
قل لي ما الذي تريد بناءه. أول 15 دقيقة استشارة مجانية.
احجز استشارة