یک اسکریپت 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 نیز توصیه می‌شود.

توسط پژوهشگر در 220 روز قبل ساعت 01:57
دسته بندی ها: PHP PHP for beginner
sara در 220 روز قبل ساعت 11:24

برای دانلود فایل با پارامتر 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 و محدود کردن مسیر به دایرکتوری مجاز امنیت را افزایش دهید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری