صفحة 2 من 2 الأولىالأولى 12
النتائج 16 إلى 30 من 30

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

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


    التاكد من محتوى الملف يمكن تجاوزه , وكتابة كود بي اتش بي داخل الصوره .
    الطريقة السليمة هي التاكد من امتداد الملف , بحيث لا يمكن تحميل ملف بامتداد ضار. واقصد بـ امتداد php + امتداد اخر .

    - السؤال هو لماذا الخادم apache يمرر الملف الى php بالرغم من انه لم يتم ربط هذا الملف بـ php ... انا اعتبر هذا خلل في الاعدادات او شيء من هذا القبيل





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

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


    هل يتم قراءة الملف على انه php اذا لم يكن هناك اللاحقة php ?

    إذا كان كذلك فالحل هو :

    كود:
    $name = explode(".",'file.php.rar');
    $filename = $name[0];
    $ext = ( count($name) > 2) ? $name[count($name)-1] : $name[1]; 
    echo $filename.'.'.$ext;
    فصلت فيه لتصل الفكره ..
    والفكره بالأساس للاخ Nadorino

    دمتم بود





    __________________
    إلى اللقاء سوالف , وآسف على الإزعاج...
    moffed.com , kleeja.com/tour/ar ,phpbbarabia.com

  3. #18
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    589


    الحل بسيط جدا
    استخدمو الهيدرز وأجبرو المتصفح على تحميل الملف وليس فتحه





    __________________
    ومن اعجب الاشياء انك لاتدري وانك لاتدري بانك لاتدري
    فإن كنت لاتدري ولم تكُ بالذي يسال من يدري فكيف اذن تدري
    تمام العمى طول السكوت وانما شفاء العمى يوماً سؤالك من يدري

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


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






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


    كود PHP:
    Header("Pragma: public");
    Header("Expires: 0");
    Header('Content-Description: File Transfer');
    Header('(anti-spam-(anti-spam-(anti-spam-content-type:))) application/force-download');
    Header('Content-Disposition: attachment; filename=' basename($fileurl));
    Header("(anti-spam-(anti-spam-(anti-spam-content-type:))) application/x-ms-download\n");
     
    readfile($fileurl); 
    $fileurl طبعا متغير الاسم يجب تعريفه سابقا على حسب الكود الذى تعمل به سواء كان قواعد بيانات او رفع مباشر

    الكود يعتمد على force-download ويقوم بتحميل الملف مباشرة فور طلبه من المتصفح بدون عرضه





    التعديل الأخير تم بواسطة مهندس مصرى ; 14-10-2007 الساعة 10:09 PM
    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  6. #21
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    589


    مرحبا اخوي
    أول شي
    خزن الملف المرفوع في مكان ولنفرض انه طبعا في غرض من ورا الموضوع ماحد راح يعرف مكان الملف الأصلي على السيرفر
    www.domain.com/uptemp

    ثاني شي

    عند طلب الملف عبر المتصفح اطلبه بالشكل التالي

    www.domain.com/down.php?failname=hhhhhh.gif

    محتوى ملف down.php
    كود PHP:
    <?
    //########<!----- BY S6UR ------>###########//
     
    $filename $_GET['filename'];
    //### هنا ركز شوي راح نمنعه من تحميل ملفات الموقع وقرائتها مثل الكونيق وغيره من الملفات الهامه ترى يستطيع تحميلها اذا ماحميتها بشكل مناسب   ##//
       
    $filename=str_replace("../","/",$filename);
     
    $filename=str_replace("..","/",$filename);
    //##########################################//


    //استخراج مكان تخزين الملفات الأصلي
      
    $filename="../uptemp/".$filename;

        
    $filename realpath($filename);
    //تحديد نوع امتداد الملف
     
    $file_extension strtolower(substr(strrchr($filename,"."),1));
    //تحديد نوع ال MIME لكل امتداد علشان  يتم وضعه بالهيدرز
       
    switch ($file_extension) {
                    case 
    "pdf"$ctype="application/pdf"; break;
                    case 
    "exe"$ctype="application/octet-stream"; break;
                    case 
    "zip"$ctype="application/zip"; break;
                    case 
    "doc"$ctype="application/msword"; break;
                    case 
    "xls"$ctype="application/vnd.ms-excel"; break;
                    case 
    "ppt"$ctype="application/vnd.ms-powerpoint"; break;
                    case 
    "gif"$ctype="image/gif"; break;
                    case 
    "png"$ctype="image/png"; break;
                    case 
    "jpe": case "jpeg":
                    case 
    "jpg"$ctype="image/jpg"; break;
                    case 
    "php":
                    case 
    "htm":
                    case 
    "html":
    //###################### الأمتدادات الممنوعه  ضعها هنا ####################//
                    
    case "txt": die("أمتداد غير معروف لدينا"); break;
                    default: die(
    "أمتداد غير معروف لدينا"); 
                }
                if (!
    file_exists($filename)) {
                    die(
    "أمتداد غير معروف لدينا");
                }
        
    //هنا علشان يعرض الصور مباشره بدون تحميلها  يعني استثناء وهنا بداية الهيدرز
                
    header("(anti-spam-(anti-spam-(anti-spam-content-type:))) image/$file_extension");
                
    header("Pragma: public");
                
    header("Expires: 0");
                
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                
    header("Cache-Control: private",false);
                
    header("Content-Transfer-Encoding: binary");
                
    header("Content-Length: ".@filesize($filename));
                
    set_time_limit(0);
                
    header("Content-Disposition: inline; filename=\"".basename($filename)."\";");
    //طباعة الملف  المطلوب للمتصفح
    @readfile("$filename");
    ?>

    طبعا الكود ساعدني بفكرته أبن الخليج و MSHAER.NET
    بالطريقه هذي حتى لو رفع شل للموقع ماراح يقدر يشغله لسببين
    السبب الأول
    مايعرف مكانه الأصلي داخل الموقع
    السبب الثاني
    الهيدرز راح يجبر المتصفح على تحميل الملف وليس تشغيله وتستطيع زيادة الامتدادات وايقاف التنفيذ وعدم تحميل اي ملف ايضا بمجرد وضع d
    كود PHP:
        case "php": die("أمتداد غير معروف لدينا"); break;
                    default: die(
    "أمتداد غير معروف لدينا"); 
    طبعا الصور بالكود السابق راح يتم عرضها مباشره بدون التحميل وهذا مايميز
    كود PHP:
       header("Content-Disposition: inline; filename=\"".basename($filename)."\";"); 
    فهي تعامل الملف على حسب نوعه بخلاف
    كود PHP:
     header("Content-Disposition: attachment;  filename=\"".basename($filename)."\";"); 

    جربو الكود ودعواتكم لنا

    في نصيحه مهمه للأخوان أصحاب مراكز التحميل التي لاتعتمد على قواعد البيانات

    عند أعادة تسمية الملف
    حاول تضع الآي بي تبع الملف في اسمه بطريقه ما+ تاريخ رفع الملف +كود عشوائي
    بحيث لو واحد ازعجك برفع ملفات تغضب الله ضع الاي بي حقه بداية السكربت بحيث لو كان الاي بي موجود ضمن مصفوفة الايبيات المحظوره امنعه من التحميل وريح راسك
    أيضا راقب الأخطاء اللي يتسبب فيها الزائر عند تحميل أي ملف في كل خطأ خزن معلومات الزائر والخطأ والمكان الذي يحاول الزائر الدخول له في حال الأختراق لاسمح الله بتعرف طريقة دخوله وطريقة اغلاق الثغره سهله باذن الله اذا عرف السبب

    موفقين وفمان الله





    __________________
    ومن اعجب الاشياء انك لاتدري وانك لاتدري بانك لاتدري
    فإن كنت لاتدري ولم تكُ بالذي يسال من يدري فكيف اذن تدري
    تمام العمى طول السكوت وانما شفاء العمى يوماً سؤالك من يدري

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

  8. #23
    عضو نشيط جدا
    تاريخ التسجيل
    Jun 2004
    المشاركات
    391


    الاخوان

    top7up : طريقتك حلوة لكن الاولى صعبة لانك تجبرة بانه ميكون فوق ميجا .. والثانية طويلة شوي

    هاوي php : الطريقة حلوة لكن الاعتماد والرجوع على مصفوفة متعب وايضا الخطأ الذي اظهره الاخ توب ايضاً مشكلة

    مهندس مصري : جميلة الطريقة ولكن تخيل الملف صورة لن يعرض اذا وضع كود جلب في المنتدى للصورة وايضاً سوالف قام بتحويل كلمة C o n t a c t الى anti-spam

    ضع الكود مجدداً في ملف تكست حتى يتسنى للجميع الاستفادة منه .. موفق

    s6ur : مخيف العمل هذا .. لانك ممكن ان تنسى امتداد بذالك سيقتحم الكركرز الموقع بسهولة .. أقُضل عدم استخدام الطريقة الا بعد الالمام بجميع الامتدادت الموجودة تماماً

    أما بالنسبة عن الكود فأفضل هذا كثيراً لانه صغير ومريح .. يمكنكم تجربته

    كود PHP:
            $att_path "uploads";
            
    $uniq substrmd5(uniqid (rand())), 010 );
            
    $ext strtolowersubstr($_FILES['attached']['name'], -3));
        
    move_uploaded_file($_FILES['attached']['tmp_name'],$att_path."/".$uniq.".".$ext ); 
    هكذا دع الكركرز يحلمون بأختراق الموقع .. يمكنك تغير الاسم الى ماشئت من خلال $uniq

    تحية عطرة





    __________________
    iNterMilan

    xSultan
    لخدمات التصميم والبرمجة

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

  10. #25
    عضو سوبر نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    761


    الأخ سلطان

    ممكن تعطينا فكرة الكود ؟
    يغير اسم الملف إلى اسم عشوائي ,,

    + يصير يآخذ اخر صيغة من الملف ويحسبه مثلاً كأنه Rar

    ذا حسب فهمي ,,

    وعذراً للتدخل





    __________________
    خدمات التصميم
    Amazing4Design ~ لتصميم المواقع وخدمات المواقع
    - العضوية يستخدمها شخصين :D
    ##########
    # لا إله إلا الله #
    ##########

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

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

    Thumbs up



    العزيز والغالي جداً سلطان..
    إذا حضر الماء بكل التيمم يا بطل :1power:
    طريقتك رائعة، وما فكرت فيها :con2: لأني توقعت السائل يهمه المحافظة على اسم الملف (مثل وضعي أنا مثلاً أبغى عميلي يعرف ملفاته بأسمائها، مع إمكانية تعديل الاسم << مدلعهم عالآخر :funny: )
    وفعلاً إذا عشان مركز تحميل.. يحمدون ربهم

    لا تحرمنا من إبداعاتك :app:

    مغليك
    ابوعمر






  13. #28
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    336


    مع العلم ان معلوماتي في البرمجة من جنبة

    بس السوال كيف طريقة منع الي اخر امتداد مثلا gif من العمل لانه هي اخر ماشاهدة اليومين السابقة






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


    والله اخوي مافهمت عليك ,,,
    لكن اذا كان قصدك تمنع image.gif من العمل ,,, فبهذه الطريقه , نفس الكود :
    كود PHP:
    if ( stristr($file_name,'.gif\') ) { 
      print " عفواً , هذا النوع من الملفات غير مسموح به.";
    exit;








  15. #30


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

    عيدكم مبارك و كل عام وانتم بخير

    اعتقد والله اعلم ان المشكلة تكمن في اعدادت الاباتشي و من ناحية اخرى المتصفح :

    نبدا بالاول :

    اعدادات الاباتشي اي ملف ال mime تبعه غير معروف او غير مدرج في ملف mime.types في

    مجلد ال conf يمكن اعتباره اي ملف انت تريده افتراضيا .

    الجزء المختص بهذة العملية هو :

    كود:
    DefaultType xxxxxxxxxxxxx
    حيث xxxxxxxxxxx الاعداد الافتراضي والاعداد الصحيح له

    كود:
    DefaultType text/plain
    لكي يعتبر اي ملف غير معروف ال mime ملف نصي و لا يمرره الى اي محرك php or perl or etc

    ناخذ مثالين على هذة العملية :


    لو عدلنا في ملف الاعداد تبع الاباتشي

    هذا السطر
    كود:
    DefaultType text/plain
    الى
    كود:
    DefaultType  application/x-httpd-php
    فسيمرر الاباتشي اي ملف غير معروف ال mime الى محرك php

    جرب مثلا هذا الملف واكتب به اي كود php

    كود:
    1.wow
    الان سنجري تغيير طفيف لنستكشف اكثر عن هذا الموضوع

    عدل السطر مرة اخرى الى

    كود:
    DefaultType application/x-gzip
    و اطلب الملف ذو الامتداد wow مرة اخرى

    ستجد الاباتسي يغير امتداد الملف اليا و يصبح الملف
    كود:
    1.gz
    ويمكن تحميله ايضا وليس عرضه

    اذا خطورة هذا الامر في حاله الاعداد الخاطي ممكن تجعل ملفات php قابله للتحميل :con2:
    يعني ممكن احمل ملف config تبع اي منتدى :court:

    اعتقد يمكن عمل هذا من ملف .htaccess ايضا


    2-من ناحية المتصفح

    لا يمكن اعتماده كحل بتاتا بل هو ميزه في لفايرفوكس لانه في حاله كون الاعداد

    كود:
    DefaultType text/plain
    لايمكن عرض ملف php ذو امتداد gif او jpg

    اعتقد انه يشيك على ال mime ويظهر رساله خطا بعكس الاكسبلورر اللى يكتفي

    بعرض الملف فقط .


    حل المشكله :

    1- تغيير اعداد الاباتشي عن طريق ملف config او htaccess الاول هو المفضل لاصحاب السيرفرات

    2- او مقارنة المتداد مع mime ورفض الغير متطابق .

    وراح تلاقي mime type في هذا الملف

    كود:
    C:\EasyWAMP\Apache2\conf\mime.types

    سلاام
    ان اصبت فمن الله و ان اخطأت فمن الشيطان





    __________________
    ايزي وامب
    Apache2+PHP5+PHP4+MySQL5+phpmyadmin
    ww.easywamp.com
    ________________________________





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

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

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