راکت

آپلود ایمن فایل در php

3 پاسخ

سلام.
دوستان ما دو روش برای اعتبار سنجی فرمت فایل در موقع آپلود داریم.
یکی کد پایین که منبعش سایت https://www.w3schools.com/php/php_file_upload.asp هست.

$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {

یکی هم کد زیر که از طریق mime بررسی می کنیم.

if(($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/jpg") .....

شما کدام حالت رو پیشنهاد می کنید که از لحاظ امنیت بهش اطمینان داشته باشیم و چرا ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

میثم
میثم
@adoniya.ir
ثبت پرسش جدید

پاسخ‌ها

3
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

بهترین حالت چک کردن mimetype هست
مثلا کد زیر

function get_mime_type($file) {
    $mtype = false;
    if (function_exists('finfo_open')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mtype = finfo_file($finfo, $file);
        finfo_close($finfo);
    } elseif (function_exists('mime_content_type')) {
        $mtype = mime_content_type($file);
    } 
    return $mtype;
}
سید حسین رضوی
سید حسین رضوی
@hossein.r.1442

تخصص: برنامه نویس وب و طراح رابط کاربری

منم از همین مدل آقای موسوی استفاده میکردم توی کدام

شاید پاسخ شما همین‌جا باشد

میثم
میثم
@adoniya.ir

تخصص: برنامه نویسی PHP خالص بدون هیچ گونه فریمورکی! با کمی چاشنی CSS و جاوا !!!

ممنونم @hesammousavi

اما این روش مشکل خودشو داره. فرضا اگه فرد پسورد فایل رو عوض کنه ، با این کد فایلش معتبر اعلام میشه.
همچنین طبق تحقیقاتی که کردم mime برای همه فایل ها جواب گو نیست.
فرضا فایل های docx یا xlsx دارای کدهای mime هستن که گاهی اوقات بر اساس مرورگر ممکنه که به فایل xml یا zip تعبیر بشن!

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام