آسیبپذیری File Inclusion (شامل LFI و RFI) یعنی وقتی مهاجم میتواند با کنترل مسیر یک فایل، فایلهای ناخواسته (محلی یا راه دور) را در برنامه وارد کند. این مشکل اغلب به علت دریافت نام فایل یا مسیر از ورودی کاربر و الحاق مستقیم آن در توابعی مثل include یا require بدون اعتبارسنجی رخ میدهد. عواقب آن میتواند افشای اطلاعات حساس، اجرای کد مخرب روی سرور یا حتی تصرف کل سامانه باشد. جلوگیری از این آسیبپذیری با اعتبارسنجی ورودی و محدود کردن انتخاب فایل به لیست مجاز انجام میشود.
۱. تست دستی (Manual Testing)
ورودیهای مشکوک مثل پارامترهای URL (?file=...) را با مقادیر مخرب (مثلاً ../../etc/passwd یا URL از راه دور) تست کنید. بررسی رفتار برنامه در مواجهه با ورودی غیرمنتظره (فایل نامعتبر یا فایل راه دور).
۲. استفاده از ابزارهای خودکار (Automated Tools)
ابزارهای DAST مثل: Burp Suite، OWASP ZAP، Acunetix، Nikto (برای یافتن پارامترهای حساس به فایل) اسکنرهای SAST برای شناسایی کدهای مشکوک مثل include, require, fopen, file_get_contents ابزار مخصوص مثل LFISuite و fimap
۳. بررسی لاگ و رفتار غیرعادی سرور
جستجوی خطاهای مربوط به فایل یا مسیر در لاگ وبسرور (مثلاً خطاهای 500 یا خطاهای مرتبط با include در PHP) تحلیل رفتار فایلهای آپلودشده یا فایلهای موقت غیرمنتظره
۴. تحلیل کد (Code Review)
جستجوی کدهایی که فایلها را به صورت داینامیک و بر اساس داده کاربر لود میکنند، بدون اعتبارسنجی مناسب استفاده از ابزارهای استاتیک مانند SonarQube یا PHPStan
راهکارهای مقابله و کاهش ریسک File Inclusion
۱. اعتبارسنجی (Validation) و پاکسازی ورودیها
هرگز به داده ورودی کاربر به عنوان نام فایل اعتماد نکنید. فقط اجازه انتخاب از لیست ثابت بدهید (whitelist). حذف کاراکترهای خطرناک مانند ../, ..%2F, null byteها (%00) و …
۲. محدود کردن دسترسیها و تنظیمات سرور
غیرفعال کردن allow_url_include و allow_url_fopen در PHP. محدودکردن دسترسیهای فایل به حداقل نیاز؛ به ویژه فایلهای حساس مثل /etc/passwd.
۳. استفاده از realpath و توابع ایمن
قبل از دسترسی به فایل، مسیر را با realpath چک کنید تا از شلکد یا دسترسی غیرمجاز جلوگیری شود. توابع امن سفارشی برای مدیریت فایل استفاده کنید.
۴. پیادهسازی مکانیزمهای امنیتی وب سرور/برنامه
استفاده از WAF و سختسازی (Hardening). محدودکردن متدهای HTTP و اسکریپتهای قابل اجرا
۵. بهروزرسانی منظم نرمافزار
تمامی کامپوننتها (CMS، کتابخانهها و فریمورکها) را بهروز نگه دارید تا از پچشدن آسیبپذیریهای شناختهشده مطمئن شوید.
۶. پایش (Monitoring) و تحلیل رویدادها
فعالسازی مانیتورینگ و هشدار برای رخدادهای مشکوک یا تلاش برای دسترسی به فایلهای غیرمجاز.