صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 30

الموضوع: كيف تقوم بحماية سكربت رفع الملفات من ملفات الـ PHP.

  1. #1
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431

    كيف تقوم بحماية سكربت رفع الملفات من ملفات الـ PHP.



    بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته
    في دورة برمجة سكربت رفع الملفات
    قم بتعلم كيفية برمجة السكربت.

    الآن سنقوم بحماية السكربت من امكانية رفع ملفات محددة
    مثلأ:
    shell.php.rar
    في السكربت الذي قمنا بعمله , يمكن رفع هذا الملفات بسهولة , وعند رفع ملفات الشيل سيتمكن المخترق من اختراقك واختراق المواقع التي على السيرفر معك !.

    ولهذا ستقوم بمنع امكانية رفع ملفات الـ PHP

    افتح ملف upload.php
    وقم بإضافة :
    كود:
    if ( stristr($file_name,\'.php\') ) { 
      print \" عفواً , هذا النوع من الملفات غير مسموح به.\";
    exit;
    }
    قم بإضافتها مباشرة تحت
    كود:
    //هنا اسطر اعدة تسمة الملف
    $file_name = $HTTP_POST_FILES[\'fileup\'][\'name\'];
    $fileup    = $HTTP_POST_FILES[\'fileup\'][\'tmp_name\'];  
    $random_digit=rand(0000,9999);
    $new_file_name=$random_digit.$file_name;
     // نهاية اعادة تسمية الملف
    
    // اسم المجلد الذي تريد تحميل الملفات اليه
    // فقط قم بتغيير up_down
    $path= \"up_down/\".$new_file_name;

    طبعاً سأقوم بتوضيح exit;
    الموجودة بالكود
    وهي لإيقاف تحميل الصفحة اي لايتم عمل اي شئ تتوقف الصفحة.


    انتهى الدرس.

    كيف تقوم بحماية سكربت رفع الملفات من ملفات الـ PHP. - (Powered By MySmartBB Royal)







  2. #2
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    درس مفيد لكن لا يمكن اختراق مركز التحميل اذا تم رفع ملف بهذا الاسم shell.php.rar , الاسم السابق لا يمكن ان يعمل على الموقع او يتم تنفيذه .
    الطريقة في التاكد من اسم الملف صحيحه لكنها ايضا ستمنع اي ملف يحتوى على عبارة .php !!!





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    الطريقة في التاكد من اسم الملف صحيحه لكنها ايضا ستمنع اي ملف يحتوى على عبارة .php !!!
    طريقة اخرى ..
    كود PHP:
    // the name check function, this function return 0 if not true, and return 1 if true.
    function name($file_name)
    {
        
    // explode the file name
        
    $file_name explode(".",$file_name);
        
        
    // count array
        
    $count count($file_name);

        
    // if the file name is true
        
    if ($count == 2)
        {
            
    // true
            
    return 1;
        }
        
        
    // if the file name is not true
        
    else
        {
            
    // not true
            
    return 0;
        }







    التعديل الأخير تم بواسطة dev11 ; 08-10-2007 الساعة 06:15 AM

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    337


    درس مفيد لكن لا يمكن اختراق مركز التحميل اذا تم رفع ملف بهذا الاسم shell.php.rar , الاسم السابق لا يمكن ان يعمل على الموقع او يتم تنفيذه .
    الطريقة في التاكد من اسم الملف صحيحه لكنها ايضا ستمنع اي ملف يحتوى على عبارة .php !!!
    بلى أخي يمكن إختراق عن طريق ذلك الإمتداد






    __________________
    سبحان الله وبحمده سبحان الله العظيم

  5. #5
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    بعد التجربه ورفع ملف على موقعي وجدت ان كلامك صحيح , لكن لا اعلم لماذا يتم تمرير ملف يحمل المسار rar الى محرك php ؟
    هل يمكن لاحدكم تفسير ذلك ؟





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Sep 2007
    المشاركات
    93


    السلام عليكم ورحمة الله

    مشكور أخي على المعلومات المفيدة ... لكن !

    كن حذرا ... يمكن تعطيل الــ JavaScript من المتصفح و يمر المستخدم على السكريبت و هو يتفرج

    بالتوفيــــــق






  7. #7
    عضو فعال
    تاريخ التسجيل
    Nov 2005
    المشاركات
    1,283


    التفسير المنطقى .. هو ان السيرفر يقوم بقراءة ومعالجة الملف ليس عن طريق إمتداده بل عن طريق الMIME الخاص به .. فاذا كان الملف الذى قمتم برفعه مجرد ملف php وتم تغيير إمتداده فقط فالتفسير هذا هو المنطقى ..

    هذا تفسيرى بمجرد النظر للردود دون التجربة او البحث فى الأمر ولكن بإذن الله غداً بجرب فى الأمر





    __________________
    سبحان الله وبحمده ... سبحان الله العظيم.
    إقرأ .. لتتعلم
    [AJAX] سكربت إتصل بنا (ديف كونتاكت) النسخة 2.3.2
    للتواصل ..

  8. #8
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    ليس الامتداد rar فحسب بل ايضا 3gp,scr وحتى shell.php.111 يتم تحويله الى محرك php !!
    أعتقد انها ثغرة من ثغرات محرك php .. ولكن يمكن تفاديها كما اوضح اخونا الكريم ff5006





    التعديل الأخير تم بواسطة dev11 ; 08-10-2007 الساعة 05:44 AM

  9. #9
    عضو نشيط
    تاريخ التسجيل
    Sep 2007
    المشاركات
    93


    ولكن يمكن تفاديها كما اوضح اخونا الكريم ff5006
    كيف يمكن تفاديها يا رجل :anger1:

    أعرف أن الجافا سكريبت لتنضيم المحتوى فقط و ليست للحماية

    و قد قلنا سابقا بأنه يمكن تعطيل الجافاسكريبت من المتصفح و ستقف متفرجا أنت و السكربت

    معا






  10. #10
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    كيف يمكن تفاديها يا رجل
    اقصد بالتفادي : منع تحميل الملف من نوع
    كود:
    php.rar
    أعرف أن الجافا سكريبت لتنضيم المحتوى فقط و ليست للحماية

    و قد قلنا سابقا بأنه يمكن تعطيل الجافاسكريبت من المتصفح و ستقف متفرجا أنت و السكربت

    معا
    لم افهم ما تعنيه اخي الكريم ؟ فليس هناك جافا سكريبت في مركز التحميل ، وحتى لو وجدت فما دخلها في هذه الثغره ؟ ارجو التوضيح بشكل اكبر ..

    وفقك الله ،،






  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    337


    الحل هو إرغام المستعمل على حفظ الملف على جهازه حيث ثنبثق نافدة فيها خيار هو حفظ الملف في الجهاز ويمكن عمل ذلك بواسطة هذا الكود
    ضع في ملف الـ .htaccess
    كود:
    AddType application/octet-stream .avi
    AddType application/octet-stream .mpg
    AddType application/octet-stream .mov
    AddType application/octet-stream .pdf


    بإمكانة تعديل واضافة المزيد من الملفات بتغيير امتداد الملف ..
    أضف هذا السطر
    AddType application/octet-stream .php.rar





    __________________
    سبحان الله وبحمده سبحان الله العظيم

  12. #12
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    شكراً للجميع على المرور

    اما بالنسبة للتجارب
    فهذا عنوان سكربت رفع الملفات قبل وضع الكود الذي قمنا بشرحه
    [ مركز رفع الملفات لـ موقع خدمات ]-Powerd By MySimpleFileUploader
    ويمكن رفع ملف shell.php.rar لوكنه لن يعمل لان الاستضافة المجانية منعت هذا الشئ على مااأظن.
    وهنا السكربت بعد الترقيع ولايمكن رفع ملف shell.php.rar
    [ مركز رفع الملفات لـ موقع خدمات ]-Powerd By MySimpleFileUploader










  13. #13
    عضو نشيط
    تاريخ التسجيل
    Sep 2001
    المشاركات
    54

    Lightbulb قدامك حلين!!



    أهلاً شباب.. كل عام وانتم بخير، ومن العايدين قبل لا أسافر وانقطع عن النت.

    فعلاً موضوع مهم وأنا شخصياً كنت أظن كما ظن أخوي ضيف، وتفاجأت بالنتيجة!! :con2:

    عموماً عندي لكم أحد حلين:
    الأول: بتشييك المحتوى (وهذا على قول المصريين "ما يخرش الميه" :1power:، بإذن الله) بس عيبه انه بيفتش جوّا الملف، طبعاً يبطئ شويتين لو صار الملف كبير (وممكن نحط شرط ان يكون الملف أصغر من 1ميجا مثلاً)
    كود PHP:
    if ($_FILES['fileup']['size'] < 1048576) { 
    // If a9'3ar min 1 Meg (performance wise only)
        
    if ( preg_match'/<[?](php|)\s+(.*)\s+[?]>/Usi'
        
    file_get_contents($_FILES['fileup']['tmp_name']) ) ) {
            die (
    '<h1>7asbi Allah 3laik, Yal MIJRIM!!</h1>');
        }

    الثاني: أنك تصلح اسم الملف حسب المحاولات اللي فوق، وطريقتي كالتالي:
    كود PHP:
    // الامتداد بلحال
    $ext get_ext($_FILES['fileup']['name']);
    // الاسم الفعلي بلحال
    $name =  strip_ext($_FILES['fileup']['name']);
    // تبديل النقط بمدات
    $name =  str_replace ('.''_'$name);
    // تركيب الاسم من جديد
    $new_name "$name.$ext";

    function 
    strip_ext($name){
        
    $ext strrchr($name'.');
        if(
    $ext !== false){
            
    $name substr($name0, -strlen($ext));
        }
        return 
    $name;
    }
    function 
    get_ext($name){
        return 
    strtolower(substr(strrchr($name'.'),1));

    وعلى فكرة :deal: هالطريقة تصلح حتى للامتدادات اللي أكثر من 3 حروف مثل jpeg. و mpeg. وهي غير حساسة لحالة الحرف (يعني تزبط معاها سمول وكبتل، مع اني أفضل انك تسمّلها باستخدام
    كود PHP:
    $new_name strtolower($new_name); 
    هاه؟ما استاهل دعوة!






  14. #14
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    279


    وعليكم السلام ورحمة الله وبركاته

    لقد عانيت كثير من مشكلة الحماية فى مراكز التحميل

    فالسرفر يقوم بالنظر الى ال MIME كما قال اخي Developer

    فيمكنك عمل ملف الشيل واعادة تسميته Shell.gif و سيعمل زي الحصان

    وليس Gif لوحده بل كل الامتدادات وهذا عن تجربة مريرة مع حماية مركز التحميل

    والحل الذي استخدمته هنا هو التاكد من نوع الملف والحمد لله شغال زي الفل

    كود PHP:
    //   MIME استخراج نوع الملف
    $filetype=$_FILES['fileup']['type'];

    // وضع الانواع الخطيرة فى مصفوفة 
     
    $dngr= array('text/html','text/plain','application/xhtml+xml','application/x-php','text/php',
    'application/x-httpd-php','application/x-javascript');

      if (
    in_array($filetype,$dngr)){ die(" Foot Bokra ") ; } 
    1- طبعا يمكنك اضافة اى MIME خطير الى المصفوفة

    2- " Foot Bokra " مقتبسة من اكواد استاذ هاني جمال

    اخوكم محمد





    __________________


    Mohamed Mahmoud

    Mobile : +20103452846

    Blog : Hawy PHP

    Mail : Hawy [.] PHP [@] Gmail.com

    حسبي الله ونعم الوكيل


  15. #15
    عضو نشيط
    تاريخ التسجيل
    Sep 2001
    المشاركات
    54

    Thumbs down لم تعمل



    كود PHP:
    //   MIME استخراج نوع الملف
    $filetype=$_FILES['fileup']['type'];

    // وضع الانواع الخطيرة فى مصفوفة 
     
    $dngr= array('text/html','text/plain','application/xhtml+xml','application/x-php','text/php',
    'application/x-httpd-php','application/x-javascript');

      if (
    in_array($filetype,$dngr)){ die(" Foot Bokra ") ; } 
    اخوكم محمد
    شكراً اخ محمد الله يوفقك، :con2: بس هذا ليس حلاً في حالة تغيير الاسم إليك التجربة التالية:
    غيرت اسم ملف index.php إلى index.png وهذه هي النتيجة:
    كود PHP:
    Array ( [name] => index.png [type] => image/png [tmp_name] => C:\WINDOWS\TEMP\php17B.tmp [error] => [size] => 5431 
    على فكرة أنا مجرب على الخادم المحلي Windows للإحاطة فقط










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض