PDA

View Full Version : آپلود امن در yii



amdvbgmail
جمعه 15 فروردین 1393, 10:59 صبح
با سلام خدمت دوستان و تبریک سال جدید و آرزوی سربلندی و سلامتی برای همه
برای آپلود امن در yii آیا صرفا استفاده از رول ها در مدل کافیه؟ یا در yii کلاس یا هلپر خاصی برای اینکار تعبیه شده و نحوه استفاده ش به چه شکلی هست؟
ممنون

MMSHFE
جمعه 15 فروردین 1393, 12:30 عصر
کلاس CUploadedFile هست ولی نه برای آپلود امن بلکه کلاً برای مدیریت بهتر و ساده تر فایلهای آپلود شده. برای مباحثی مثل آپلود امن بهتره از افزونه های مناسب استفاده کنید یا اینکه خودتون کلاس دلخواه رو بسازین (مثلاً با کمک GD).

amdvbgmail
دوشنبه 18 فروردین 1393, 14:02 عصر
ممنون از پاسختون
ببخشید اگه امکانش هست کلاس یا افزونه ایی برای آپلود امن فایل معرفی کنید ؛

MMSHFE
دوشنبه 18 فروردین 1393, 15:47 عصر
من خودم توی یکی از پروژه ها برای آپلود امن تصویر و ساخت Thumbnail بطور همزمان از کلاس زیر استفاده میکردم:

class SecureUpload {
/**
* Constructor
*/
public static function Upload($fileElement, $fileName, $path, $maxSize = 2097152) {
$file =& $_FILES[$fileElement];
if($file['error'] == 0 && $file['size'] <= $maxSize) {
$src = null;
switch($file['type']) {
case 'image/bmp':
$src = ImageCreateFromWBMP($file['tmp_name']);
break;
case 'image/gif':
$src = ImageCreateFromGIF($file['tmp_name']);
break;
case 'image/jpeg':
$src = ImageCreateFromJPEG($file['tmp_name']);
break;
case 'image/png':
$src = ImageCreateFromPNG($file['tmp_name']);
break;
}
if($src !== null) {
// Create Image
$dst = ImageCreateTrueColor(400, 290);
$white = ImageColorAllocate($dst, 255, 255, 255);
ImageFill($dst, 200, 145, $white);
ImageCopyResized($dst, $src, 0, 0, 0, 0, 400, 290, ImageSX($src), ImageSY($src));
ImageJPEG($dst, $path . DIRECTORY_SEPARATOR . $fileName . '.jpg', 100);
// Create Thumbnail
$dst = ImageCreateTrueColor(150, 150);
$white = ImageColorAllocate($dst, 255, 255, 255);
ImageFill($dst, 75, 75, $white);
ImageCopyResized($dst, $src, 0, 0, 0, 0, 150, 150, ImageSX($src), ImageSY($src));
ImageJPEG($dst, $path . DIRECTORY_SEPARATOR . $fileName . '_t.jpg', 100);
ImageDestroy($dst);
ImageDestroy($src);
}
}
}
}
این کلاس رو توی مسیر protected/components/SecureUpload.php ذخیره کنید و بصورت SecureUpload::Upload('photo', $fileName); استفاده کنید که photo اسم عنصر file توی فرمتونه و fileName$ هم اسم فایل مقصد که میخوان بعد از ذخیره کردن، استفاده بشه. درصورت تمایل برای تغییر مسیر پیشفرض هم از پارامتر سوم استفاده کنید.

amdvbgmail
دوشنبه 18 فروردین 1393, 21:37 عصر
با تشکر از پاسختون
من توی وب سایتم اجازه آپلو فایل zip رو به کاربران دادم ،و دنبال راه کاری برای امن سازی این نوع فایل میگردم در واقع چیزی که نیازه فک کنم تشخیص .zip بودن فایله ، و برای این کار توی مدل اینکارو کردم ، اما فک نکنم امنیت اینکار بالا باشه ، اگه راه کاری امن رو پیشنهاد کنید ممنون میشم توی زحمت هم افتادین .ببخشید

MMSHFE
سه شنبه 19 فروردین 1393, 01:37 صبح
میتونید از کتابخانه مخصوص این کار مثل Zip (http://ir2.php.net/manual/en/book.zip.php) و RAR (http://ir2.php.net/manual/en/book.rar.php) و دستوراتی مثل RarArchive::isSolid و... استفاده کنید.