خطاف الويب
خطاف الويب (بالإنجليزية : Webhook) هو وظيفة رد اتصال تعتمد على بروتوكول نقل النص المُتشعِّب (بالإنجليزية : HTTP) تتم إثارتها تلقائيًا عند وقوع حدث معين في النظام المُصدِر، وإرساله إلى النظام المُستقبِل باستعمال عنوان هذا الأخير المُعَرَّف بـمحدد موقع الموارد المُوحّد (بالإنجليزية : URL ) والذي تم تكوينه لخطاف الويب، ويكون ردُّ الاتصال مصحوبًا غالبا بحمولة من البيانات معتمدة على تنسيق جسون.[1][2]
يُطلق على عنوان محدد موقع الموارد المُوحّد هذا اسم نقطة نهاية الاتصال لـخطاف الويب. ويجب أن تكون نقاط نهاية الاتصال عامة أي غير محجوبة عن أحد بل ممكنة الوصول لأي كان من خلال الانترنت، ومن المهم أن يكون هذا العنوان ( أي محدد موقع الموارد المُوحّد) مِلْكا للنظام المُستَقبِل أو المقصود.
من بين الأحداث التي تثير خطاف الويب يمكننا ذكر على سبيل المثال:[3]
والعديد من حالات أخرى.
كيفية الإشتغال
[عدل]يعمل خطاف الويب بمبدأ "ردة فعل الحدث" (لا داعي لأن تتصل بي أنت، أنا سأتصل بك كلما جدَّ جديد)، ولهذا يُسمَّى أحيانًا واجهة برمجة التطبيقات العكسية (بالإنجليزية : reverse API)، فهو يُجنب الحاجة إلى دفع طلبات مستمرة من النظام أو التطبيق المُستَقبِل إلى النظام أو التطبيق المُصدِر مما يتيح تفادي الاستهلاك المفرط للموارد لدى النظامين (وقت تشغيل وحدات المعالجة المركزية، ذاكرات الوصول العشوائي، وحدات الإدخال والإخراج،... الخ).
مقارنة بين خطاف الويب و واجهة برمجة التطبيقات
[عدل]أوجه الشبه:
- يتيح كل منهما إمكانية تبادل البيانات بين التطبيقات والخدمات المختلفة.
- يستخدم كل منهما بروتوكول نقل النص المُتشعِّب لإرسال الطلبات وتلقيها.
- يقوم كل منهما بتبادل البيانات ضمن نسق جسون أو لغة التوصيف القابلة للتوسعة (بالإنجليزية : XML).
أوجه الاختلاف:
- يتم إثارة خطافات الويب من خلال أحداث محددة وإرسال إشعارات إلى عنوان محدد موقع الموارد المُوحّد المحدد مُسبقًا، بينما تسمح واجهة برمجة التطبيقات باتصال ثنائي الاتجاه وأكثر تعقيدًا بين التطبيقات.
- تعد خطافات الويب عمومًا أكثر بساطة في وضعها واستخدامها، لأنها لا تحتاج إلى إدارة المصادقة أو إدارة الأخطاء المعقدة.
- توفر واجهة برمجة التطبيقات المزيد من المرونة والتحكم، مما يمَكِّنُهَا من الوصول إلى نطاق أوسع من الميزات والبيانات..
مصادقة إشعار خطاف الويب
[عدل]عندما يقوم العميل (موقع الويب أو التطبيق الأصلي أو التطبيق المُرسِل) بإجراء اتصال عبر الويب بخادم لمستخدم ما، يجب مصادقة طلب الإرسال ( بالإنجليزية: POST) الوارد لتجنب هجوم الانتحال والتحقق من الطابع الزمني الخاص به لتجنب هجوم إعادة التشغيل.
و يمكن استخدام تقنيات مختلفة لمصادقة العميل:
- يمكن استخدام المصادقة الأساسية لبروتوكول نقل النص المُتشعِّب لمصادقة النظام المُرسِل
- يمكن أن يتضمن خطاف الويب معلومات حول نوع الحدث، وتوقيعًا سريًا أو رقميًا مشتركًا للتحقق من أصل خطاف الويب.
- يمكن اللجوء إلى تقنية تضمين توقيع رمز مصادقة الرسالة استنادًا على التجزئة ذات المفتاح كترويسة بروتوكول نقل النص المُتشعِّب كما يفعل كل من غيت هاب[4] و فيسبوك[5] مثلا.
- يمكن استخدام مصادقة بروتوكول طبقة المقابس الآمنة[6] (بالإنجليزية : TLS) المتبادلة عند إنشاء الاتصال بين المُرسِل والمُستَقبِل مما يُمكّنُ المُستَقبِل من التحقق من شهادة العميل.[7]
- قد يختار المُرسل استعمال عنوان ضمن قائمة ثابتة من عناوينو بروتوكول الإنترنت التي سيتم إرسال الطلبات منها. أمنيًا لا يعد هذا إجراءً كافيًا في حد ذاته، ولكنه مفيد عندما تكون نقطة النهاية المُستَقبِلة خلف جدار الحماية أو يستعمل آلية ترجمة عنوان الشبكة ( بالإنجليزية: NAT).
المراجع
[عدل]- ^ "Un webhook, qu'est-ce que c'est ?". www.redhat.com (بالفرنسية). Archived from the original on 2024-02-29. Retrieved 2024-06-18.
- ^ "Qu'est-ce qu'un webhook et comment sont-ils utilisés ?". Mailgun (بfr-FR). Archived from the original on 2023-12-03. Retrieved 2024-06-18.
{{استشهاد ويب}}
: صيانة الاستشهاد: لغة غير مدعومة (link) - ^ "Webhooks". WordPress.com Support (بالإنجليزية). 14 Apr 2010. Archived from the original on 2024-06-12. Retrieved 2024-06-18.
- ^ "Validating webhook deliveries". GitHub Docs (بالإنجليزية). Archived from the original on 2024-05-21. Retrieved 2024-06-18.
- ^ "تعذّرت معالجة طلبك". Meta للمطوّرين. مؤرشف من الأصل في 2024-03-03. اطلع عليه بتاريخ 2024-06-18.
- ^ "Securing Webhooks". FusionAuth (بالإنجليزية). Archived from the original on 2023-12-21. Retrieved 2024-06-18.
- ^ "Mutual TLS (MTLS): How Mutual Authentication Works". www.docusign.com (بالإنجليزية الأمريكية). 19 Mar 2020. Archived from the original on 2024-02-21. Retrieved 2024-06-18.