مع تزايد الاعتماد على تطبيقات الويب في مختلف المجالات، أصبح أمن هذه التطبيقات هدفاً رئيسياً للمهاجمين. من بين أشهر الهجمات التي تستهدفها هجمات XSS (Cross-Site Scripting) و CSRF (Cross-Site Request Forgery). ورغم أن كليهما يندرج ضمن فئة هجمات الويب، إلا أن طريقة التنفيذ والأهداف مختلفة تماماً. هذا المقال يوضح الفرق بينهما ويقدّم للمطورين دليلاً عملياً للحماية.
ما هي هجمات XSS؟
التعريف
هجوم XSS يحدث عندما يتمكن المهاجم من حقن شيفرة JavaScript أو أكواد خبيثة داخل صفحات الويب، بحيث تُنفذ في متصفح المستخدم عند فتح الصفحة.
الأنواع الرئيسية
XSS منعكس (Reflected): يحدث عند تمرير مدخلات المستخدم مباشرة إلى الصفحة بدون فلترة.
XSS مخزن (Stored): يتم تخزين الشيفرة الخبيثة في قاعدة البيانات أو الخادم، وتُعرض لكل المستخدمين.
XSS قائم على DOM: يستغل التلاعب بكائنات DOM في المتصفح.
المخاطر
سرقة بيانات الجلسة (Session Cookies).
اختطاف الحسابات.
نشر برمجيات خبيثة عبر الموقع.
ما هي هجمات CSRF؟
التعريف
هجوم CSRF يعتمد على استغلال ثقة موقع موثوق بالمستخدم. يقوم المهاجم بإجبار الضحية على إرسال طلبات غير مرغوبة (مثل تحويل أموال أو تغيير كلمة مرور) دون علمه، طالما أن الجلسة لا تزال نشطة.
آلية التنفيذ
الضحية يقوم بتسجيل الدخول إلى موقع موثوق.
المهاجم يرسل رابطاً أو يزرع شيفرة مخفية في موقع آخر.
عند ضغط الضحية على الرابط أو تحميل الصفحة، يتم إرسال طلب إلى الموقع الموثوق باستخدام جلسة الضحية النشطة.
المخاطر
تنفيذ أوامر حساسة باسم المستخدم.
تغيير إعدادات الحساب.
سرقة الأموال أو تعديل البيانات.
الفرق الجوهري بين XSS و CSRF
العنصر | هجوم XSS | هجوم CSRF |
---|---|---|
طريقة التنفيذ | حقن وتشغيل شيفرات خبيثة داخل المتصفح. | استغلال ثقة الموقع بجلسة المستخدم النشطة. |
الهدف | التحكم بمتصفح المستخدم وسرقة بياناته. | إجبار المستخدم على تنفيذ أوامر دون علمه. |
الدور الأساسي | المهاجم يستهدف المستخدم مباشرة. | المهاجم يستغل الموقع عبر المستخدم. |
التأثير | سرقة الجلسات، اختطاف الحسابات. | تحويل أموال، تغيير كلمات مرور. |
كيف تحمي تطبيقك كمطور؟
الحماية من XSS
فلترة مدخلات المستخدم: التأكد من إزالة أي وسوم HTML أو جافاسكريبت.
ترميز المخرجات (Output Encoding): عند عرض البيانات المدخلة.
استخدام CSP (Content Security Policy): لمنع تحميل سكربتات غير مصرح بها.
الحماية من CSRF
استخدام رموز CSRF Tokens: توليد رمز فريد في كل طلب.
التحقق من مصدر الطلب (Referer/Origin): لضمان أن الطلب صادر من موقعك.
تحديد صلاحيات الجلسة: مثل مدة زمنية قصيرة لانتهاء الصلاحية.
خاتمة
رغم أن XSS و CSRF يبدوان متشابهين لغير المختصين، إلا أن الاختلاف في طريقة الاستغلال يجعل كل منهما تهديداً فريداً يتطلب حلولاً مختلفة. حماية تطبيقات الويب لا تعتمد على إجراء واحد، بل على اتباع ممارسات أمان شاملة تشمل التحقق من المدخلات، إدارة الجلسات، وتطبيق معايير الأمان الحديثة.