• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تشخیص نوع فایل -اپلود امن
#1
با سلام دوستان .من میخوام با استفاده از mime نوع فایل اپلود شده خودم رو تشحیص بدم.واجازه ندم فایل های مخرب اپلود بشن.ولی mime به من ارور میده.
این کدهای من
کد پی‌اچ‌پی:
$myFile $file1["file"];
        if (
function_exists('finfo_open'))
        {
             
$finfo = new finfo(FILEINFO_MIME_TYPE);
         
            
$mtype $finfo->file($myFile["tmp_name"]);
           
        } elseif (
function_exists('mime_content_type'))
        {
           echo 
$mtype mime_content_type($file);
        }
        return 
"$mtype"

php.ini هم mime رو فعال کردم.
این ارور من
نقل قول:finfo::file(C:\xampp\tmp\phpFA50.tmp): failed to open stream: No such file or directory [APP\Controller\Component\ImageuploadComponent.php, line 173]
ممنون میشم راهنماییم کنید.اگرم میشه بهم بگید واسه یه اپلود امن باید دیگه چه توابعی رو بکار ببرم با تشکر
  پاسخ
تشکر شده توسط :
#2
.سلام
خطایی که می ده یعنی فایل در مسیری که مشخص کردی نیس.
  پاسخ
تشکر شده توسط :
#3
(۱۳۹۴ تير ۰۹, ۱۲:۱۱ ب.ظ)mohammadhosain نوشته: .سلام
خطایی که می ده یعنی فایل در مسیری که مشخص کردی نیس.

حل شد!.انگار به این صورت کار میکنه که اول فایل رو اپلود بعد نوع اون رو میشه مشخص کرد.ظاهرا typ_name باهاش کار نمیکنه.
  پاسخ
تشکر شده توسط :
#4
بهتره برای امنیت بیشتر از GD استفاده کنی.
  پاسخ
تشکر شده توسط : hamid_80386
#5
کد پی‌اچ‌پی:
if($_FILES['userfile']['type'] == 'image/jpeg')
{
...

یا

$blacklist 
= array('.php''.phtml''.py''.pl');

foreach(
$blacklist as $item)
{
    if(
preg_match("/{$item$}/i"$_FILES['userfile']['name']))
    {
    ...

یا

$imageinfo 
getimagesize($_FILES['userfile']['tmp_name']);

if((
$imageinfo['mime'] == 'image/gif') && ($imageinfo['mime'] == 'image/jpeg'))
{
... 
هچنین باید مسیر آپلود رو مخفی نگه داری. و یا اجازه دسترسی مستقیم بهش ندی

سایز فایل آپلودی رو هم در محدودیت قرار بده

permission فایل رو هم بدرستی تعیین کن

بعلاوه بدون که فایل filename.php.123 یا filename.php.jpg و... هم از نوع PHP هستند و توسط مفسر می تونن تفسیر و اجرا بشن
نقل قول:Apache:
Files can have more than one extension, and the order of the extensions is normally irrelevant. For example, if the file welcome.html.fr maps onto content type text/html and language French then the file welcome.fr.html will map onto exactly the same information. If more than one extension is given which maps onto the same type of meta-information, then the one to the right will be used, except for languages and content encodings. For example, if .gif maps to the MIME-type image/gif and .html maps to the MIME-type text/html, then the file welcome.gif.html will be associated with the MIME-type text/html.
و...
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط : hamid_80386
#6
(۱۳۹۴ تير ۰۹, ۱۲:۵۸ ب.ظ)Y.P.Y نوشته:
کد پی‌اچ‌پی:
if($_FILES['userfile']['type'] == 'image/jpeg')
{
...

یا

$blacklist 
= array('.php''.phtml''.py''.pl');

foreach(
$blacklist as $item)
{
    if(
preg_match("/{$item$}/i"$_FILES['userfile']['name']))
    {
    ...

یا

$imageinfo 
getimagesize($_FILES['userfile']['tmp_name']);

if((
$imageinfo['mime'] == 'image/gif') && ($imageinfo['mime'] == 'image/jpeg'))
{
... 
هچنین باید مسیر آپلود رو مخفی نگه داری. و یا اجازه دسترسی مستقیم بهش ندی

سایز فایل آپلودی رو هم در محدودیت قرار بده

permission فایل رو هم بدرستی تعیین کن

بعلاوه بدون که فایل filename.php.123 یا filename.php.jpg و... هم از نوع PHP هستند و توسط مفسر می تونن تفسیر و اجرا بشن
نقل قول:Apache:
Files can have more than one extension, and the order of the extensions is normally irrelevant. For example, if the file welcome.html.fr maps onto content type text/html and language French then the file welcome.fr.html will map onto exactly the same information. If more than one extension is given which maps onto the same type of meta-information, then the one to the right will be used, except for languages and content encodings. For example, if .gif maps to the MIME-type image/gif and .html maps to the MIME-type text/html, then the file welcome.gif.html will be associated with the MIME-type text/html.
و...

چرا میگن نباید اجازه داد کاربر فایل زیپ اپلود کنه؟چجوری میشه امنیت اپلود فایل های زیپ رو تامین کرد؟منظور شناسای فایل های مخرب داخل فایل هست
  پاسخ
تشکر شده توسط :
#7
نقل قول:میگن نباید اجازه داد کاربر فایل زیپ اپلود کنه
مثلا کی گفته کجا گفته؟
منبع؟
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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