راکت

آپلود امن و حرفه ای تمام فرمت ها

3 پاسخ

سلام
من می خوام با php یه آپلودر درست کنم که جی کوئری هم باشه یعنی میزان فایل آپلود شده رو به درصد نشون بده.
همچنین بشه تموم فرمت ها رو با خیال راحت اپلود کرد از جمله php و net و css . js و ....
چه راهی به ذهنتون میرسه؟
آیا اسکریپت امنی داریم در این زمینه که بهم معرفی کنید؟
آیا استفاده از تیکه کد

 $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
و 
$_FILES["file"]["type"]

برای امنیت بخشی به آپلودر کفایت میکنه؟ با این که میخوام اجازه آپلود فایل php هم بدم.
آیا توی فایل htaccess باید تغییراتی ایجاد کنم؟

ثبت پرسش جدید

پاسخ‌ها

3
بامداد
بامداد
@bamdad

یه نمونه کد گذاشتم که کمک میکنه ، توش حجم فایل و پسوند ها رو به دلخواه خودت میتونی تغییر بدی
همچنین از آپلود فایل با پسوند exe و لینک بودن جلوگیری شده

کد رو میتونی به دلخواه خودت refactor کنی

<?php

$file = $_FILES;

if($file["error"] == 0) {

    $fileName = $file["name"];
    $fileType = $file["type"];
    $fileTmp = $file["tmp_name"];
    $fileError = $file["error"];
    $fileSize = $file["size"];

    $uploadOk = 1;

    $targetMain = ""; // masire delkhah 
    $newName = "picture";

    $allowedTypes = ["image/jpg", "image/jpeg", "image/png", "image/bmp"];

    // pasvand hayi ro ke mikhay upload she tayin ***
    // be onvane mesal 3ta nemoone gozashtam

if (!is_executable($fileName) AND !is_link($fileName)){

        if(!in_array($fileType, $allowedTypes)) {

            $uploadOk = 0;
        }

        if($fileSize > 5242880) { // size delkhah ro bar hasbe byte moshakhas ***

            $uploadOk = 0;
        }

        if($uploadOk == 1) {

            $ext =  pathinfo($fileName, PATHINFO_EXTENSION);
            $target = $targetMain.$newName.".".$ext;
            move_uploaded_file($fileTmp, $target);

        }

        clearstatcache(true);

        }

}

?>
میثم
میثم
@adoniya.ir

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

@bamdad
ممنونم.
این کد برای اجازه آپلود فایل php امن هست؟
منظورم اینه که در قسمت

$allowedTypes  

به فایل php هم اجازه اپلود بدیم.

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

بامداد
بامداد
@bamdad

ببین تو فایل php ممکنه یکسری کد نوشته شده باشه که برنامه رو دچار مشکل کنه ، مثلا ممکنه یه اسکریپت بنویسه هزار تا کار بکنه ،
بنابراین توصیه نمیشه ، در کل هر فایلی بخای میتونی آپلود کنی در صورتی که پسوندشو اضافه کنی

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

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