رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آپلود امن و جلوگیری از آپلود شل
#1
سلام و خسته نباشید به دوستان عزیز
چند روزی بود در مورد مبحث آپلود امن فایل ها و جلوگیری از آپلود شل تحقیق میکردم.
به مطالبی مفیدی دست پیدا کردم ، در اینجا مطرح میکنم اگه چیزی از قلم افتاده بود بگین تا مطلبمون کامل بشه.
ممنون

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

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

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

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

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

خواهشا اگه مطلبی دارید که کمکمان میکند بیان کنید.
پاسخ
تشکر شده توسط:
#2
منظور از این متن چیست؟
۲ – بهتره فایل را خارج از Document Root ذخیره کنیم. در این صورت هیچ‌کس امکان دسترسی از طریق وب به مسیر ذخیره شده را نداره.
خارج از document root چیست؟
مرسی
پاسخ
تشکر شده توسط:
#3
سلام
به این آدرس ی نگا بندازید.
http://www.sjji.ir/public/image/
الان وقتی من میرم تو ابن آدرس همه ی فایل هارو میبینم.
چطور میتونم کاری کنم که وقتی آدرس رو میزنم به هیچ کدوم از فایل ها دسترسی نداشته باشم.
آیا باید از خود هاست تنظیم بکنم یا راه حل دیگه ای داره.
مرسی
پاسخ
تشکر شده توسط:
#4
با htaccess. میتونید:
Options -Indexes
پاسخ
تشکر شده توسط:
#5
در مورد آپلود با توابع gd کد آماده یا کلاسی دارید که دیگه من دنبال توابع نباشم.
پاسخ
تشکر شده توسط:
#6
برای سؤالات جداگانه، تاپیک مجزا ایجاد کنید.
پاسخ
تشکر شده توسط:
#7
اگر با تابع explode فرمت فایل رو شناسایی کنیم و با یه شرط جلوگیری کنیم فکر نکنم بشه دورش زد
چون خودمم اکثرا از این روش استفاده میکنم
اگر مشکل امنیتی داره اساتید محترم راهنمایی کنن تا بتونیم جلوگیری کنیم
سرم را خم نمیکنم 
حتی اگر سقف آسمان از قامتم کوتاه تر باشد Heart
پاسخ
تشکر شده توسط:
#8
(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 و امثال اون میشه کار کرد.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان