تالار گفتمان nCIS.ir

نسخه‌ی کامل: آپلود امن و جلوگیری از آپلود شل
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام و خسته نباشید به دوستان عزیز
چند روزی بود در مورد مبحث آپلود امن فایل ها و جلوگیری از آپلود شل تحقیق میکردم.
به مطالبی مفیدی دست پیدا کردم ، در اینجا مطرح میکنم اگه چیزی از قلم افتاده بود بگین تا مطلبمون کامل بشه.
ممنون

هیچ گاه خود تصویر رو مستقیما آپلود نکنیم و با استفاده از توابع gd این کار رو انجام بدیم.(تو مطالب قدیمی تر این روش رو معرفی کرده بودن ولی تو ی جایی خوندم که این روش هم دیگه امن نیستش)

هر فایلی رو که آپلود میکنیم حتما با روش های مختلف تغییر نام بدیم.یعنی اگه فایل one.jpg بود به hajsdkjsd47as8asf.jpg تغییر دهیم.

با استفاده از $_file['img']['type'] نوع فایل رو تشخیص بدیم(این روش زیاد تاثیری نداره یعنی زیاد مهم نیست)

تو یه جایی میخوندم که با استفاده از htaccess در بعضی از فولدر ها اجازه اجرای فایل های php رو ندهم.یعنی تو فولدری که فقط عکس آپلودکردیم یا تو فولدری که فقط فیلم آپلود کردیم اجازی اجرای فایل های php رو ندهیم.

در مورد آپلود با توابع gd کد آماده یا کلاسی دارید که دیگه من دنبال توابع نباشم.

خواهشا اگه مطلبی دارید که کمکمان میکند بیان کنید.
منظور از این متن چیست؟
۲ – بهتره فایل را خارج از Document Root ذخیره کنیم. در این صورت هیچ‌کس امکان دسترسی از طریق وب به مسیر ذخیره شده را نداره.
خارج از document root چیست؟
مرسی
سلام
به این آدرس ی نگا بندازید.
http://www.sjji.ir/public/image/
الان وقتی من میرم تو ابن آدرس همه ی فایل هارو میبینم.
چطور میتونم کاری کنم که وقتی آدرس رو میزنم به هیچ کدوم از فایل ها دسترسی نداشته باشم.
آیا باید از خود هاست تنظیم بکنم یا راه حل دیگه ای داره.
مرسی
با htaccess. میتونید:
Options -Indexes
در مورد آپلود با توابع gd کد آماده یا کلاسی دارید که دیگه من دنبال توابع نباشم.
برای سؤالات جداگانه، تاپیک مجزا ایجاد کنید.
اگر با تابع explode فرمت فایل رو شناسایی کنیم و با یه شرط جلوگیری کنیم فکر نکنم بشه دورش زد
چون خودمم اکثرا از این روش استفاده میکنم
اگر مشکل امنیتی داره اساتید محترم راهنمایی کنن تا بتونیم جلوگیری کنیم
(18-07-1394، 03:59 ب.ظ)olampiad نوشته: [ -> ]در مورد آپلود با توابع gd کد آماده یا کلاسی دارید که دیگه من دنبال توابع نباشم.

یه نمونه کد:
if(isset($_FILES['photo'])) {
    $photo = &$_FILES['photo'];
   if($photo['size'] > 2097152 && $photo['error'] == 0 && $photo['type'] == 'image/jpeg') {
       $src = ImageCreateFromJPEG($photo['tmp_name']);
       $w = ImageSX($src);
       $h = ImageSY($src);
       $dst = ImageCreateTrue($w, $h);
       ImageCopy($dst, $src, 0, 0, 0, 0, $w, $h);
       ImageJPEG($dst, 'uploads/' . str_replace('.', '-', pathinfo($photo['name'], PATHINFO_FILENAME)) . '.jpg');
       ImageDestroy($dst);
       ImageDestroy($src);
   }
}


(26-04-1395، 10:47 ب.ظ)raspina نوشته: [ -> ]اگر با تابع explode  فرمت فایل رو شناسایی کنیم و با یه شرط جلوگیری کنیم فکر نکنم بشه دورش زد
چون خودمم اکثرا از این روش استفاده میکنم
اگر مشکل امنیتی داره اساتید محترم راهنمایی کنن تا بتونیم جلوگیری کنیم

اگه از فیلتر GD رد نکنید ممکنه داخل هدرها یا قسمت دیتای تصویر کد Inject شده باشه. البته GD تنها روش نیست و میشه از کتابخانه‌هایی مثل ImageMagick و... هم استفاده کرد. برای فیلم و سایر فرمتها هم با کمک افزونه‌هایی مثل ffmpeg و امثال اون میشه کار کرد.