میثم
5 سال پیش توسط میثم مطرح شد
3 پاسخ

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

سلام.
دوستان ما دو روش برای اعتبار سنجی فرمت فایل در موقع آپلود داریم.
یکی کد پایین که منبعش سایت 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") .....

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


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
1

بهترین حالت چک کردن 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 5 سال پیش مطرح شد
0

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


میثم
تخصص : برنامه نویسی PHP خالص بدون هیچ...
@adoniya.ir 5 سال پیش مطرح شد
0

ممنونم @hesammousavi

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


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

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