یک اسکریپت PHP بنویسید که یک مسیر فایل/پوشه را دریافت کند و اگر مسیر یک پوشه بود با استفاده از is_dir لیست فایلها را بهصورت یک صفحه HTML نمایش دهد و اگر مسیر یک فایل بود آن را با هدرهای مناسب (Content-Type و Content-Disposition) برای دانلود ارسال کند.
7.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 03:13 0.0
برای حل این مسئله از توابع پایهای PHP مانند is_dir برای تشخیص پوشه، scandir یا glob برای خواندن محتویات پوشه، و header بههمراه readfile یا fpassthru برای ارسال فایل استفاده کنید؛ جهت تعیین نوع MIME میتوانید از finfo_file یا mime_content_type بهره بگیرید. نکات امنیتی شامل اعتبارسنجی مسیر (جلوگیری از directory traversal با realpath و مقایسه با یک دایرکتوری پایه)، استفاده از basename برای نام فایل دانلودی و ارسال هدرهای مناسب قبل از خروجی (و فراخوانی exit بعد از ارسال فایل) است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای امنیت، مسیر ورودی را با realpath بررسی کنید و مطمئن شوید که واقعاً زیر دایرکتوری پایه پروژه قرار دارد تا از حملات directory traversal جلوگیری کنید. اگر is_dir باشد، با scandir یا glob محتوای پوشه را بهصورت یک صفحه HTML لیست کنید. اگر فایل باشد، نوع MIME را با finfo_file تعیین کرده و هدرهای Content-Type و Content-Disposition مناسب با basename فایل را ارسال کنید و از readfile یا fpassthru برای خروجی استفاده کنید و در نهایت exit کنید. همچنین بهتر است قبل از ارسال هدرها خروجی دیگری وجود نداشته باشد (با ob_end_clean یا خاموش کردن خروجی) و اعتبار مسیر را با یک کانتکست امن نسبت به دایرکتوری پایه بررسی کنید.
گزارش