مرحبا
هل هناك طريقة للحماية من ثغرات Socket.io
يتعرض السيرفر الخاص بي لهجمات يدوية عبر استهداف websocket
يتم من خلالها ارسال اكثر من طلب عبر ارقام معينة من websocket مما يؤدي الى ايقاف السيرفر
ما هي الطرق المتبعة للحماية من هذا الأمر
أولاً نقوم بتحديث مكتبة Socket.io إلى أحدث إصدار لمنع استغلال ثغرات في الإصدارات القديمة.
ثم قم بفحص وتحقق من جميع البيانات المستلمة عبر WebSocket لضمان عدم وجود بيانات غير صالحة أو خبيثة، باستخدام مكتبات مثل validator.js.
ثم تطبيق المصادقة لتقييد الوصول إلى WebSockets، من أجل منع المستخدمين غير المصرح لهم من الوصول إلى WebSockets.
أيضًا ضع حدًا أقصى لعدد الطلبات التي يمكن إرسالها عبر WebSocket في الثانية الواحدة، وإليك مثال باستخدام مكتبة node-rate-limiter-flexible:
بالإضافة للخطوات التي وضحها مصطفى في التعليق السابق يعد تحديد rate limiting أحد أهم تدابير الأمان التي يجب على أي تطبيق خادم تنفيذها، خاصةً التطبيقات في الوقت الفعلي مثل تطبيقك التي تستخدم WebSockets. حيث يعتبر هجمات (DoS) تهديدًا خطيرًا، وبدون تحديد معدل الطلبات، يمكن لأي عميل ضار أن يكون بالكثير من الطلبات على خادمك بسهولة
لذلك استخدم تقنية rate limiting لتحديد عدد الطلبات التي يمكن إرسالها إلى الخادم من خلال رقم WebSocket معين. على سبيل المثال، يمكنك تحديد أنه يمكن إرسال 100 طلب فقط في الدقيقة من خلال رقم WebSocket معين.
إضافة إلى النصائح التي عرضها الزملاء في تعليقاتهم، عتقد أنه يجب عمل هذا الإجراء لحماية السيرفر من الهجمات المحتملة على Socket.io من خلال تكوين الإعدادات الأمانية فنقوم بتكوين إعدادات السيرفر الخاص بنا لتقليل فترة استمرار الاتصالات الغير مفيدة أو الهجمات، مثلا يمكن ضبط متغيرات مثل pingInterval و pingTimeout في إعدادات السيرفر. بهذا الشكل:
const io = require('socket.io')(httpServer, { pingInterval: 10000, pingTimeout: 5000, });
التعليقات