یک اسکریپت PHP بنویسید که یک مسیر فایل را از پارامتر GET به نام file دریافت کند، با استفاده از basename نام فایل را استخراج کرده و فایل را با هدرهای مناسب (Content-Type و Content-Disposition با filename برابر basename) برای دانلود به مرورگر ارسال کند.
10.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:57 0.0
از تابع basename() برای استخراج نام فایل، از mime_content_type() یا finfo برای تعیین نوع محتوا و از header() برای فرستادن هدرهای HTTP استفاده کنید؛ قبل از ارسال فایل حتماً با realpath و بررسی file_exists و is_readable مسیر را اعتبارسنجی کنید تا از حملات directory traversal جلوگیری شود و با readfile() محتوا را به خروجی بفرستید؛ ارسال Content-Length و خروج با exit پس از readfile نیز توصیه میشود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای دانلود فایل با پارامتر GET به نام file، از basename برای استخراج نام پرونده استفاده کنید و با mime_content_type یا سفارشی با finfo نوع محتوا را تعیین کنید. قبل از ارسال، مسیر را با realpath بررسی کنید و وجود و قابلیت خواندن فایل را با file_exists و is_readable تأیید کنید تا از حمله directory traversal جلوگیری شود. سپس هدرهای Content-Type و Content-Disposition با filename برابر basename را تنظیم کرده و از Content-Length استفاده کنید و با readfile محتوا را به خروجی ارسال کنید و در نهایت با exit از اسکریپت خارج شوید. توجه کنید که mime_content_type ممکن است در برخی محیطها درست کار نکند و بهتر است با finfo و محدود کردن مسیر به دایرکتوری مجاز امنیت را افزایش دهید.
گزارش