ما الفرق بين LFI و RFI؟

الفرق بين LFI وRFI هو أن LFI (Local File Inclusion) تعتمد على استغلال ملفات موجودة داخل السيرفر نفسه، بينما RFI (Remote File Inclusion) تسمح بتضمين ملفات من مصدر خارجي عبر الإنترنت، وكلاهما من ثغرات الويب الخطيرة الناتجة عن ضعف التحقق من المدخلات.


أولاً: ما هي ثغرات File Inclusion؟

ثغرات File Inclusion تظهر في تطبيقات الويب عندما يسمح النظام بإدخال مسار ملف يتم تحميله أو تنفيذه دون تحقق أو فلترة كافية. وغالباً ما تظهر في تطبيقات PHP أو الأنظمة التي تعتمد على إدراج الملفات ديناميكياً.


ثانياً: ما هو LFI (Local File Inclusion)؟

التعريف

LFI هي ثغرة تسمح للمهاجم بتحميل أو قراءة ملفات موجودة بالفعل على نفس الخادم.

كيف تحدث؟

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

ماذا يمكن أن يستهدف؟

  • ملفات النظام الحساسة
  • ملفات الإعدادات (Configuration Files)
  • ملفات السجلات (Logs)
  • ملفات الكود الداخلي للتطبيق

خطورته:

  • كشف بيانات حساسة
  • معرفة بنية السيرفر
  • أحياناً يمكن تطويره إلى تنفيذ أوامر على السيرفر

ثالثاً: ما هو RFI (Remote File Inclusion)؟

التعريف

RFI هي ثغرة تسمح للمهاجم بتضمين ملفات من سيرفر خارجي عبر رابط URL.

كيف تعمل؟

إذا كان التطبيق يسمح بتحميل ملف من رابط خارجي بدون قيود، يمكن للمهاجم إدخال رابط يحتوي على كود خبيث يتم تنفيذه داخل الموقع.

خطورته:

  • تنفيذ كود عن بُعد (Remote Code Execution)
  • السيطرة الكاملة على الموقع
  • رفع سكربتات خبيثة
  • سرقة البيانات أو تخريب الموقع

رابعاً: الفرق بين LFI وRFI

العنصر LFI RFI
مصدر الملف محلي داخل السيرفر خارجي عبر الإنترنت
طريقة الاستغلال قراءة ملفات داخلية تنفيذ ملفات من خارج السيرفر
الخطورة عالية خطيرة جداً
التأثير تسريب معلومات اختراق كامل للسيرفر
المتطلبات وجود مسار ملف داخلي السماح بتحميل روابط خارجية

خامساً: طرق الحماية من LFI وRFI

1. التحقق من المدخلات (Input Validation)

منع المستخدم من التحكم في مسارات الملفات بشكل مباشر.

2. استخدام قوائم مسموح بها (Whitelist)

السماح فقط بملفات محددة مسبقاً داخل التطبيق.

3. تعطيل تضمين الملفات الخارجية

خصوصاً في إعدادات PHP مثل allow_url_include.

4. تقليل الصلاحيات

تشغيل التطبيق بأقل صلاحيات ممكنة لتقليل الضرر.

5. تحديث النظام باستمرار

لتجنب الثغرات المعروفة في الإصدارات القديمة.


خلاصة

يمكن تلخيص الفرق بأن LFI يستهدف ملفات داخلية على نفس الخادم، بينما RFI يسمح بتنفيذ ملفات من خارج الخادم، مما يجعله أخطر بكثير. فهم هذه الثغرات يساعد المطورين على بناء تطبيقات أكثر أماناً وحماية البيانات من الاختراق والاستغلال.

السابق
ما هي أفضل طرق بناء الروابط؟
التالي
ما هو Singleton Pattern؟