Unrestricted File Download

از Secure Coding

Unrestricted File Download یا دانلود نامحدود فایل، یک نوع آسیب پذیری است که در آن، مهاجم قادر می باشد به فایل‌هایی که باید از طریق یک صفحه وب خاص قابل دسترسی باشند، بدون هیچگونه محدودیت و با استفاده از روش‌های نفوذ به آن صفحه، دسترسی پیدا کنند و این فایل‌ها را دانلود کنند. با این کار، هکران می‌توانند به اطلاعات محرمانه سایت دسترسی پیدا کنند، کدهای مخربی را اجرا کرده و در نهایت باعث خطر امنیتی شوند.

مثالی از این نوع حمله، زمانی است که یک سایت وب، برای دانلود فایل‌های خود از URL ثابت استفاده کند و در صفحه‌ای مانند "download.php?file=example.pdf"، فایل را قرار دهد. در این صورت، هکران می‌توانند با دست کمپردازی URL، به فایل‌های سرور دسترسی پیدا کنند.

برای جلوگیری از این نوع حمله، باید از روش‌هایی مانند استفاده از نام‌های تصادفی برای فایل‌های دانلودی، بررسی مجوزهای دسترسی کاربران و محدود کردن دسترسی به فایل‌های حساس استفاده کرد. همچنین، باید از استفاده از URL ثابت برای دانلود فایل‌ها خودداری شده و هر فایل را با یک URL جداگانه و تصادفی قابل دسترسی کرد.


$file = $_GET['file'];
$file_path = "/path/to/files/" . $file;
header("Content-disposition: attachment; filename=".$file);
readfile($file_path);

این کد، فایلی که در صفحه با URL ثابت دانلود می‌شود، را قابل دسترسی می‌کند. با این کار، اگر هکران بتوانند URL را تغییر دهند، می‌توانند به فایل‌های سایت دسترسی پیدا کنند.


روش های جلوگیری

  • استفاده از URL تصادفی: به جای استفاده از URL ثابت، هر بار برای دانلود فایل، یک URL تصادفی ایجاد شود. این کار باعث می‌شود هکران نتوانند با تغییر URL، به فایل‌های سایت دسترسی پیدا کنند.
  • بررسی مجوزهای دسترسی: هنگامی که کاربر درخواست دانلود فایل را می‌دهد، باید مجوز دسترسی او به فایل‌ها بررسی شود. اگر کاربر مجوز دسترسی به فایل را ندارد، باید به او اجازه دانلود فایل ندهید.
  • محدود کردن دسترسی به فایل‌های حساس: فایل‌هایی که شامل اطلاعات حساسی هستند، باید با محدودیت دسترسی قرار داده شوند تا فقط کاربران مجاز به دسترسی به آن‌ها بتوانند آن‌ها را دانلود کنند.