PDA

View Full Version : سوال: آپلود فایل بصورت امن



abbas27
چهارشنبه 20 اسفند 1393, 18:49 عصر
سلام دوستان-خواستم یه قسمت واسه آپلود فایل ایجاد کنم.چند جا که خوندم گفته شده بود با استفاده از gd آپلود امنی دارم اما این روش فقط واسه تصاویر هست.اگر بخوام غیر از تصویر فایلهای دیگه آپلود بشن چی؟خودمم روش استفاده از gdواسه تامین امنیت و آپلود رو بلد نیستم و نمیدونم ار کجا شروع کنم و چیکار باید کرد.ممنون میشم راهنمایی کنید یا نمونه و مثال بزنید

prans.info
چهارشنبه 20 اسفند 1393, 20:48 عصر
باید فرمت فایل رو چک کنید :


$format = strtolower (end (explode ('.',$_FILES ['file']['name'])));
if ($format=='txt' or $format=='png'){
echo 'valid';
}

همچنین تایپ (MIME) فایل رو بررسی کنید :


if ($_FILES ['file']['type']=='image/png' or $_FILES ['file']['type']=='text/plain'){
echo 'valid';
}

و در نهایت اسم فایل رو از حالت چند پسوندی در بیارید :


$format = end (explode ('.',$_FILES ['file']['name']));
$new_name = str_replace ('.'.$format,'',$_FILES ['file']);
$new_name = str_replace ('.','_',$new_name);
$new_name .= $format;

موفق باشید

abbas27
چهارشنبه 20 اسفند 1393, 21:00 عصر
دوست عزیز من خواستم با gd پیاده سازی بشه.

prans.info
چهارشنبه 20 اسفند 1393, 21:01 عصر
دوست عزیز من خواستم با gd پیاده سازی بشه.
با gd فقط عکس میشه

abbas27
چهارشنبه 20 اسفند 1393, 21:12 عصر
درسته.حالا فعلا قسمت عکسش رو درست کنیم تا برسیم به فایلای دیگه.واسه فایلای دیگه حتما روشی هست که امن باشه.اگه روش امنی هم هست که میدونید واقعا خوب هست ذکر کنید.مثلا یکی از چیزای مهمی که هس اگه فایلی که تصویر نیست با پسوند عکس بخواد آپلود بشه بررسی کنه و...

prans.info
چهارشنبه 20 اسفند 1393, 21:21 عصر
درسته.حالا فعلا قسمت عکسش رو درست کنیم تا برسیم به فایلای دیگه.واسه فایلای دیگه حتما روشی هست که امن باشه.اگه روش امنی هم هست که میدونید واقعا خوب هست ذکر کنید.مثلا یکی از چیزای مهمی که هس اگه فایلی که تصویر نیست با پسوند عکس بخواد آپلود بشه بررسی کنه و...
من شخصا تا حالا با gd ولید بودن فایل رو چک نکردم ولی با gd فقط میتونه type و محتوا رو بررسی کنه و یه سری موارد که من بالا ذکر کردم رو چک نمی کنه مثلا دو فرمتی بودن فایل که تویه بعضی سرور ها مشکل ساز میشه (باگ بزرگ) .
ولی اینو مطمئن هستم gd فقط میتونه رو عکس مانور بده ...
به زودی یک فانکشن جامع برای آپلود رو در همین انجمن قرار میدم :چشمک:

Unique
پنج شنبه 21 اسفند 1393, 01:50 صبح
برای چک کردن عکس میتوین از چنین تابعی استفاده کنی‌:


function is_image($path)
{
$a = getimagesize($path);
$image_type = $a[2];

if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}

ravand
پنج شنبه 21 اسفند 1393, 06:39 صبح
میتونی از .htaccess هم استفاده کنی:

php_flag engine 0RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wmlAddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml

prans.info
پنج شنبه 21 اسفند 1393, 11:52 صبح
میتونی از .htaccess هم استفاده کنی:

php_flag engine 0RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wmlAddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml

تویه لینوکس بیشتر type (MIME) تویه نحوه اجرای فایل دخیله تا فرمت ...

ravand
پنج شنبه 21 اسفند 1393, 12:00 عصر
تویه لینوکس بیشتر type (MIME) تویه نحوه اجرای فایل دخیله تا فرمت ...
خب من اینو امتحان کردم جواب داد. وقتی این فایل رو توی پوشه ی آپلود فایل میذاری دیگه فایلی هم اگه اپلود بشه اجرا نمیشه.

prans.info
پنج شنبه 21 اسفند 1393, 12:12 عصر
خب من اینو امتحان کردم جواب داد. وقتی این فایل رو توی پوشه ی آپلود فایل میذاری دیگه فایلی هم اگه اپلود بشه اجرا نمیشه.
من خودم یک آپلود سنتر رو که تایپ رو چک نمی کرد گرفتم دستم و فقط فرمت رو زدم png و وقتی باز میکردی php بود .:لبخند:
این دستوری که شما گذاشتید کاربردی و لازم هست ولی اصل کاری چک کردن در هنگام آپلود هست .