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

نسخه‌ی کامل: آپلود عکس با فرمت GIF و با امنیت
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2
سلام
من از کتابخانه ی gd برای آپلود امن استفاده کردم. ولی فایل gif را وقتی آپلود میکنه از حالت متحرک بودنش خارج میشه.
<form enctype="multipart/form-data" method="post">
<input type="file" name="photo"/>
<input type="submit" value="ارسال"/>
</form><br/>

<?php
if(isset($_FILES['photo']['name']) && $_FILES['photo']['error'] == 0) {
    $photo = &$_FILES['photo'];
    switch(strtolower($photo['type'])) {
    case 'image/gif':
        $src = ImageCreateFromGIF($photo['tmp_name']);
        break;
    case 'image/jpeg':
        $src = ImageCreateFromJPEG($photo['tmp_name']);
        break;
    case 'image/png':
        $src = ImageCreateFromPNG($photo['tmp_name']);
        ImageAlphaBlending($src, false);
        ImageSaveAlpha($src, true);
        break;
    case 'image/bmp':
        $src = ImageCreateFromWBMP($photo['tmp_name']);
        break;
    default:
        exit();
        break;
    }
$dst = ImageCreateTrueColor(ImageSX($src), ImageSY($src));
$white = ImageColorAllocate($dst,  255, 255, 255);
ImageFilledRectangle($dst, 0, 0, ImageSX($src), ImageSY($src), $white);
ImageCopyResampled($dst, $src, 0, 0, 0, 0, ImageSX($src), ImageSY($src), ImageSX($src), ImageSY($src));
ImageJPEG($dst, 'upload/' . substr($photo['name'], 0, strrpos($photo['name'], '.')) . '.jpg', 100);
ImageDestroy($dst);
ImageDestroy($src);
}
?>
در حال حاضر GD امکان تولید GIF متحرک نداره. باید از ImageMagick استفاده کنید.
یه نمونه مثال دارید ؟
متشکرم.
این دستور رو زدم:
<?php
echo phpinfo();
?>
دیدم از ImageMagick پشتیبانی نمیکنه. اصلا همچین چیزی توش نبود.
برنامه همچین اخطاری بهم میده:
کد:
Fatal error: Class 'Imagick' not found in
نسخه ای که استفاده میکنم:
کد:
PHP Version 5.6.8
باید چکار کرد؟
سلام ، فکر می کنم باید ImageMagick version 6.3.5 یا نسخه های بالاتر رو نصب کنید ، توضیحات این لینک رو مطالعه بفرمایین
http://www.magickwand.org

پ ن : اگر موفق شدین استفاده کنین ، یه نمونه ساده و کامل اینجا بنویسید تا منم استفاده کنم d:
آموزش نصبش رو اینجا هم گذاشته:
http://www.elxsy.com/2009/07/installing-...p-imagick/
ولی خب اینو که روی هاست سایتم که نمیتونم نصبش کنم که. سرور مجازی نمیخواد؟
لطفا یه پیشنهاد دیگه بدید.
ممنونم
به نظرتون اگه من پسوند و نام عکس رو عوض کنم و از htaccess هم استفاده کنم . امنیتش برقرار میشه؟
ممکنه توی عکس کد Inject شده باشه. البته خیلی هم نمیشه رو این موارد حساس شد ولی من شخصاً ترجیح میدم توی بحث امنیت، روزه شک دار نگیرم.
من یه فکری کردم به نظرتون میشه وقتی فایل میخواد آپلود بشه یه شرطی بذاریم و داخل عکس رو بررسی کنیم و بگیم اگه داخل این فایل دستور <?Php وجود داشت فایل آپلود نشه؟
چطوره؟
راستی وقتی با htaccess کاری کنیم که فایل عکس قابل اجرا نباشه هکر چطوری میتونه فایل رو اجرا کنه و هک کنه؟
همیشه کدها PHP نیستن. ممکنه اسمبلی یا حتی باینری و هگزادسیمال باشن. htaccess. فقط برای Apache معنا داره نه برای سیستم عامل.
نقل قول:htaccess. فقط برای Apache معنا داره نه برای سیستم عامل.
این حرفتون رو متوجه نشدم. من الان عکس هایی که داخل پوشه دارم رو وقتی به ادرسش میرم و اون عکس رو اجرا میکنم. عکس به جای اجرا دانلود میشه. بازم به نظرتون مشکلی پیش میاد؟
نمیشه رنگ عکس رو با GD گرفت که فهمید عکس هست یا نه؟
توی Code Injection مشکلی توی عکس در ظاهر پیش نمیاد و گرفتن رنگ عکس هم بدون مشکل انجام میشه. منظورم از اون صحبت هم این بود که htaccess. فقط توی درخواستهای وب بدرد میخوره. ممکنه هکر روی سرور شما یه هاست بخره و بعد از آپلود کردن شل خودش، درصورتی که سرور به خوبی کانفیگ نشده باشه، شل رو با دستورات سیستم عامل بطور مستقیم و بدون واسطه Apache اجرا کنه.
پس نتیجه میگیریم که نمیشه امنیت رو برقرار کرد Big Grin
اگه عکس رو با GD یا ImageMagick از روی فایل موقت آپلودشده دوباره بسازین و مجوز اجرا رو هم از پوشه موقت و پوشه ای که عکسها آپلود میشه بگیرین، میشه امنیت رو تا حد زیادی برقرار کرد (کدهای Inject شده حذف میشن) ولی هیچوقت، امنیت 100٪ نیست.
صفحات: 1 2