الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل هناك ثغرة

بدأه f8athy في 5 أغسطس 2009 · 38 رد · 2,342 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

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

لدي هذا الدالة للحماية

   function security( $input )
    {

       global $Plugin ; 

          foreach ( $Plugin as $key => $value )
          {
             if ($value) include($key . '.php') ;
          }

          return $input ;

    }

قمت بفحصها ببرنامج فاحص ثغرات الفايل أنكولد دلي على وجود الثغرة هنا

if ($value) include($key . '.php') ;

هل صحيح موجودة أم البرنامج خاطئ

تحياتي

تم تعديل هذه المشاركة بواسطة f8athy في 5 أغسطس 2009 في 14:40

564x.jpg
#2

نعم موجوده... طبعا يعتمد على قدره الشخص على تغيير محتوي المتغير Plugin

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#3
اقتباس
قمت بفحصها ببرنامج فاحص ثغرات الفايل أنكولد دلي على وجود الثغرة هنا

ماهو هذا البرنامج ؟

الثغرة التي يمكن أن تحدث هي ريموت انكلود على ما أظن :) صار عندي خبرة من الثغرات إللي صابت مواقعي

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#4
Ryn كتب:
نعم موجوده... طبعا يعتمد على قدره الشخص على تغيير محتوي المتغير Plugin

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

function _include($inc)
     {
       if(isset($inc))
       {
          include($inc);
       }
       else
       {
          die("محاولة غير شرعية");
       }

     }

ووضعت الكود في أول الملف فأختفت تلك الثغرة ودلني على وجود الثغرة هنا

        include($inc);

برغم من اني واضع ملف فيه هذه الدالة وقمت بفحصه ولم يقل إنها ثغرة

564x.jpg
#5
bastr3 كتب:
ماهو هذا البرنامج ؟

أرسلته على الخاص

bastr3 كتب:
الثغرة التي يمكن أن تحدث هي ريموت انكلود على ما أظن :) صار عندي خبرة من الثغرات إللي صابت مواقعي

نعم هي

هل من طريقة للحماية منها

564x.jpg
#6

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

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

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#7
اقتباس
هل من طريقة للحماية منها

في الدرس الذي قمت بشرح كيفية عمل موقع من الصفر تم حل هذه الثغره من خلال عمل مصفوفه تحتوي على جميع الملفات التي يتم عمل لها إنكلود ومن ثم السؤال عن المتغير هل هو من ضمن المصفوفه فإذا كان نعم يتم عمل إنكلود

أعتقد أن هذا الحل جذري , فأي حل آخر يمكن أن يؤدي إلى إختراق الموقع حتى لو تأكدت من أن الملف موجود على السيرفر فهذا ﻻيكفي ﻵني السيرفر يحتوي على مواقع غير موقعك ...

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#8

اذا كنت تستخدم classes و تقوم بعمل include لها , يمكنك استخدام دالة __auto_load عوضا عن ذلك

http://www.php.net/manual/en/language.oop5.autoload.php

#9
Ryn كتب:
لايوجد حل سحري للمشكله... لابد اعرف منطق البرنامج...

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

يمكنني أن أضع لك الملفات وترى منطقه

bastr3 كتب:
في الدرس الذي قمت بشرح كيفية عمل موقع من الصفر تم حل هذه الثغره من خلال عمل مصفوفه تحتوي على جميع الملفات التي يتم عمل لها إنكلود ومن ثم السؤال عن المتغير هل هو من ضمن المصفوفه فإذا كان نعم يتم عمل إنكلود

أعتقد أن هذا الحل جذري , فأي حل آخر يمكن أن يؤدي إلى إختراق الموقع حتى لو تأكدت من أن الملف موجود على السيرفر فهذا ﻻيكفي ﻵني السيرفر يحتوي على مواقع غير موقعك ...

عملت بالمصفوفة ولكن لم تعمل مع الكلاس لا أدري لماذا

ahmad123 كتب:
اذا كنت تستخدم classes و تقوم بعمل include لها , يمكنك استخدام دالة __auto_load عوضا عن ذلك

http://www.php.net/manual/en/language.oop5.autoload.php

تحياتي ليك شكرا سأحاول فهم تلك الدالة وأحاول تطبيقها فأنا مبتدأ

هل هذه الطريقة تمكنني من استدعاء ملف معين فقط يعني أفرض أني أضفتها في CLASS وقمت بطلبها هل تنفذ نفس أمر INCLUDE

تم تعديل هذه المشاركة بواسطة f8athy في 6 أغسطس 2009 في 21:13

564x.jpg
#10

bastr3:

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

شخصيا.. انا اكتب اوامر include باليد... وارتاح من وجع الراس... لكن طبعا قد تحتاج تغير الاسلوب بحسب منطق البرنامج

f8athy:

يكفي لو تشرح باختصار لماذا لم تكتب اوامر ال include يدويا

autoload فكره ممتازه ، باختصار تكتب ملف لكل class و المحرك يضيف الملفات اذا كان هناك حاجه لها في الكود

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#11
اقتباس
قد لا تكون جميع الملفات معروفه مسبقا... لذلك ما يعتبر حل جذري... كذلك اذا عندك 300 ملف ممكن يكون الموضوع متعب.

شخصيا.. انا اكتب اوامر include باليد... وارتاح من وجع الراس... لكن طبعا قد تحتاج تغير الاسلوب بحسب منطق البرنامج

أتفق معك بهذا ولكن قصدي هو حل إذا كانت عدد الملفات محدوده أو محدد مكانها في مجلد معين , يمكن عمل داله تقوم بوضع جميع الملفات في هذا المجلد في مصفوفه وبذلك يكون أمر عدد الملفات هين :) , معك أنه ليس حل جذري فقد أخطأت في هذه النقطه :)

أريد أن أطرح سؤال .. هل تغيير أسماء المتغيرات يعمل على التقليل من عمليات الإختراق ؟ لآنني أفكر في جعل المتغيرات يمكن تغييرها وأريد التأكد من هذه النقطه ...

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#12

الفكره هذي تعتمد على Security through Obscurity .. يعني امان بسبب جهل المهاجم ببعض المعلومات. وهذا من الانواع المختلف عليها بين الخبراء... مثل مسأله تشفير الكود لزياده الامان... البعض يقول هذا layer وهمي لانك فعلا ما تزيد قوه للامان عندك.

برأيي انا... احيانا المنهج هذا مفيد... مثلا..

-لو كنت استخدم WordPress اكيد راح اغير اسم مجلد wp-admin

-اكيد امنع عرض محتويات المجلدات

-امنع عرض الاخطاء

لكن مسأله تغيير اسماء المتغيرات..... فقط اذا كنت اعتقد ان شخص ما ممكن (ينشئ) متغيرات في برنامجي... (اعتقد تكلمنا قبل كذا عن انشاء متغيرات لمحتويات _POST و _GET)

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#13
Ryn كتب:
f8athy:

يكفي لو تشرح باختصار لماذا لم تكتب اوامر ال include يدويا

autoload فكره ممتازه ، باختصار تكتب ملف لكل class و المحرك يضيف الملفات اذا كان هناك حاجه لها في الكود

السلام عليكم

لم أفهم كيف يدويا

أنت تعرف أني أقوم بعميلة include لمتغير في محرك البحث الذي طرحته سابق وانت تعرف أن ععد القوالب أكثر من 12 وربما أحتاجها في ملفات أخرى وهذا جعلني أجعل دالة للحماية وجدت تلك الدالة مركبه على على محرك لقواعد البيانات قمت بتركيبها فوجدت تلك الثغرة تركتها مركبه على ذلك المحرر وقمت بجعل ملف للحماية فيه التحقيق الذي كتبته سابق لم يدلني البرنامج على وجود ثغرة في الملف الذي كتبه أنا بل دلني على الثغرة في ملف الحماية المستخدم في محرك القواعد ذهبت أنا وأضفت دالة الحماية التي كتبتها أنا فأظهر البرنامج ان الثرة لم تعد في الدلة الحماية المربوطة بالقاعدة وأصبحت بالدالة التي أضفتها أنا أول ملف الحماية الخاصة بالمحرك

ربما أعطيك مرفق

الملف sec.rar هو دالة حماية قواعد البيانات

الملف antihacker.rar هي الدوال التي قمت بكتابتها وجمعها

أرجو أن تفحصهم لي

أخي هل يمكن ان تشرح لي الدالة autoload فأنا لم أفهمها اني لا أجيد اللغة الأنجليزية

ANTI_hacker.rar

sec.rar

تم تعديل هذه المشاركة بواسطة f8athy في 7 أغسطس 2009 في 11:13

564x.jpg
#14

بســم الله الـرحمــن الرحيــم

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

أظن الطريقة تحل بالكلاس التالي

class sec
 {
   function sec_include($virable)
   {
        foreach($_GET as $value)
        {
           if(ereg($virable,$value) or ereg("<",$value) or ereg("NULL",$value))
           {
               exit("أنت تقوم بعملية غير مسموح لك بها");
           }

        }


   }

   function _include($inc)
   {
       if(isset($inc))
       {
          include($inc);
       }
       else
       {
          die("محاولة غير شرعية");
       }

   }



 } // end class

قمت بكتابة هذا الكلاس مع أخذ بعض الملعلومات من

http://forum.montadaphp.net/t1733/

تم تعديل هذه المشاركة بواسطة f8athy في 7 أغسطس 2009 في 12:56

564x.jpg
#15

هل من المعقول أن تكون هذه الثغرة في القالب السهل

السطر 196

//include Tag
        function _include($fn){
            list(,, $ex,) = array_values(pathinfo($fn));
            if(strtoupper($ex) =='PHP'){
                include($fn);  // هنا
            }else{
                return($this->display($fn));
            }
        }

السطر 259

 //load parser and return page content
        function display($FileName,$html=false) {
            if(!file_exists($this->Cache)) mkdir($this->Cache);
            $this->Cache = (!is_writeable($this->Cache))?$_ENV['TEMP']:$this->Cache;
            $file = realpath($this->Temp)."/".$FileName;
            if($html){
                $file = realpath($this->Cache)."/".$FileName.'.tpl';
                 if(md5($html) !== md5(@file_get_contents($file))){
                     $fp = fopen($file,'w');
                     fwrite($fp,$html);
                     fclose($fp);
                 }
            }
            $cache    = realpath($this->Cache)."/".str_replace(array('\\','/',':'), array('/','-',''), $file).".php";
            if(@filemtime($file)>@filemtime($cache)){
                $this->_load_file($file);
                $this->_parse();
                $fp = fopen($cache,'w');
                if(flock($fp, LOCK_EX)) {
                    fwrite($fp,$this->HTML);
                    flock($fp, LOCK_UN);
                }
                fclose($fp);
            }
            ob_start();
            include($cache); // هنا
            $this->page = ob_get_contents();
            ob_end_clean();
            return($this->page);
        }
    }

أم أن البرنامج خاطئ

564x.jpg
#16

f8athy: الرد الاول:

لم افهم كل الرد بصراحه، لكن مما فهمت... اهم شي انك تخزن اسم الملف بشكل تلقائي في قاعده البيانات، تقرأ اسم الملف من قاعده البيانات و تعمل له include كما هو. دقق على ان تتم العمليه بدون امكانيه تاثير المستخدم عليها.

الرد الثاني:

هذا كلاس سيء... اطلعت بسرعه (جدا) على الرابط.....

الشخص هذا يشرح عن الامان باسلوب (تجارب وحلول) :(

على اي حال... سيء!

الرد الثالث:

القالب السهل؟

بالنسبه للجزء الاول... اذا هذي التحقق الوحيد عندك.. نعم هناك ثغره

الجزء الثاني... الكود ملخبط وبدون comments ... غير واضح بالنسبه لي الهدف منه ...ولاوضعه في البرنامج

*اضافه بسيطه* برامج اكتشاف الثغرات مجرد تعطي مساعده... طبعا تخطئ كثير

بالنسبه لل autoloader ... هل تجيد لغه غير العربيه؟

انجليزي http://www.php.net/manual/en/language.oop5.autoload.php

فرنسي http://www.php.net/manual/fr/language.oop5.autoload.php

للاسف اغرب المراجع العربيه سيئه جدا

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#17
Ryn كتب:
f8athy: الرد الاول:

لم افهم كل الرد بصراحه، لكن مما فهمت... اهم شي انك تخزن اسم الملف بشكل تلقائي في قاعده البيانات، تقرأ اسم الملف من قاعده البيانات و تعمل له include كما هو. دقق على ان تتم العمليه بدون امكانيه تاثير المستخدم عليها.

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

أنا لم أفهم كيف هنا

اقتباس
يكفي لو تشرح باختصار لماذا لم تكتب اوامر ال include يدويا
اقتباس
الرد الثاني:

هذا كلاس سيء... اطلعت بسرعه (جدا) على الرابط.....

الشخص هذا يشرح عن الامان باسلوب (تجارب وحلول) :(

على اي حال... سيء!

والطريقة التي وضعتها أنا هل هي جيدة ام غير كافية فإن كانت كذلك ماهي الطريقة المثلى

Ryn كتب:
الرد الثالث:

القالب السهل؟

بالنسبه للجزء الاول... اذا هذي التحقق الوحيد عندك.. نعم هناك ثغره

الجزء الثاني... الكود ملخبط وبدون comments ... غير واضح بالنسبه لي الهدف منه ...ولاوضعه في البرنامج

*اضافه بسيطه* برامج اكتشاف الثغرات مجرد تعطي مساعده... طبعا تخطئ كثير

كيف التحقق الوحيد وكيف أحميها

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

Ryn كتب:
بالنسبه لل autoloader ... هل تجيد لغه غير العربيه؟

انجليزي http://www.php.net/manual/en/language.oop5.autoload.php

فرنسي http://www.php.net/manual/fr/language.oop5.autoload.php

للاسف اغرب المراجع العربيه سيئه جدا

قليلا الفرنسية

سأحاول فهمها

564x.jpg
#18

-اعتقد انك فهمت قصدي ب "يدويا".... انا لم افهم كل الرد، لكن فهمت جزء منه :)

-بالنسبه ل ANTI_hack

// Pars6 -> remove some words

ممكن تجاوزها

-في sec.rar

غير واضح بالنسبه لي استخدامك هنا لـ anti_hack

اجزاء من الكود جيده لكن يعتمد على طريقه تعامل معها

-لا اعرف اي شيء عن القالب السهل للاسف

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#19

الموضوع شيق

سأطرح الطريقه التي استعملها للحمايه من دالة الانكلود ونشوف لو كانت تمام

ما اقوم به مثلا

احظار قيمة المتغير من الرابط حتى وان كانت تحوي اسم الملف لكن بدون

اولا امتداد

ثانيا اضافه على اسم الملف يعني فليكن المتغير

?file=sarmad

قبل انكلود الملف يضاف التالي

-ah.php

يعني يكون اسم الملف

sarmad-ah.php

وبهذا حتى لو كان ممكن يجيب اي ملف لازم يكون نهايته مثل هذه النهايه

طبعا يتم فحص اذا كان الملف موجود اولا

علما اني اقوم بارسال اسم الملف بالمتغير بعد ادخاله على

md5

ثم اقوم بأدخال باقي الملفات على md5 ايضا داخل مصفوفه واتحقق من وجد الملف

طبعا اعرف ان في حالت ان الكود مكشوف للجميع يمكن معرفه القسم الاخير من المتغير ووضعه على اسم الملف

لكن لا يمكن تغيير المسار الذي يتم فحص وجود الملف فيه لانه ثابت داخل المصفوفه التي تفحص الملفات التي داخل المجلد

وايضا انا استعمل امتداد خاص ايضا مثلا بدل

.txt

اضع

.ete

طبعا اذا كان ممكن واخذ ما بداخله وتنفيذ ما اريده

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

وننتظر الخبراء يبلغونا عن العيوب

بالمناسبه لو تنفذ طريقة بسام لكن يكون محتوى المصفوفه تلقائي من خلال البحث داخل الملف الي يحوي على الملفات المراد ادراج احدها يكون نفس الشيء

اما انا مخطيء ؟

اسف ع الاطاله

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#20

فيه اجزاء ماهي واضحه.... القائمه اللي تقارن فيها.. و كيف تستخدم md5

لكن بالنسبه للجزء الاول، عملت تجارب سريعه و لقيت حل :)

?file=../../../etc/passwd\0

\0 عباره عن NULL

ما جربتها بشكل حقيقي.... لان المتصفحات العاديه ما تسمح لي... لازم استخدم Burp او شي مثله

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#21
Ryn كتب:
-اعتقد انك فهمت قصدي ب "يدويا".... انا لم افهم كل الرد، لكن فهمت جزء منه :)

آسف المشكلة لم أفهم يدويا

Ryn كتب:
-بالنسبه ل ANTI_hack

// Pars6 -> remove some words

ممكن تجاوزها

-في sec.rar

غير واضح بالنسبه لي استخدامك هنا لـ anti_hack

اجزاء من الكود جيده لكن يعتمد على طريقه تعامل معها

لقد أزلت المجلد security plugin بأكمله واعتمدت على antihacker وما أردته أن أجعل فيه كل الدوال الخاصة بحماية المدخلات والمخرجات وثغرات الـ xss والروموت وقمت في آخر الملف بطلب الكلاس بالشكل التالي

include_once ('../includes/system/ANTI_hacker.php');
$anti = new Anti_hacker;

حاولت استعمال include هنا

   $anti->_include('../includes/config.php');

وأسعى أن أقوي دالة الحماية لانكلود لتصبح تعمل بشكل أحسن حتى عند وضع متغيير داخلها بدون وجود ثغرة

Ryn كتب:
-لا اعرف اي شيء عن القالب السهل للاسف

يمكنك تحميله من المرفقات

MiNi.SpIdEr كتب:
الموضوع شيق

سأطرح الطريقه التي استعملها للحمايه من دالة الانكلود ونشوف لو كانت تمام

ما اقوم به مثلا

احظار قيمة المتغير من الرابط حتى وان كانت تحوي اسم الملف لكن بدون

اولا امتداد

ثانيا اضافه على اسم الملف يعني فليكن المتغير

?file=sarmad

قبل انكلود الملف يضاف التالي

-ah.php

يعني يكون اسم الملف

sarmad-ah.php

وبهذا حتى لو كان ممكن يجيب اي ملف لازم يكون نهايته مثل هذه النهايه

طبعا يتم فحص اذا كان الملف موجود اولا

علما اني اقوم بارسال اسم الملف بالمتغير بعد ادخاله على

md5

ثم اقوم بأدخال باقي الملفات على md5 ايضا داخل مصفوفه واتحقق من وجد الملف

طبعا اعرف ان في حالت ان الكود مكشوف للجميع يمكن معرفه القسم الاخير من المتغير ووضعه على اسم الملف

لكن لا يمكن تغيير المسار الذي يتم فحص وجود الملف فيه لانه ثابت داخل المصفوفه التي تفحص الملفات التي داخل المجلد

وايضا انا استعمل امتداد خاص ايضا مثلا بدل

.txt

اضع

.ete

طبعا اذا كان ممكن واخذ ما بداخله وتنفيذ ما اريده

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

وننتظر الخبراء يبلغونا عن العيوب

بالمناسبه لو تنفذ طريقة بسام لكن يكون محتوى المصفوفه تلقائي من خلال البحث داخل الملف الي يحوي على الملفات المراد ادراج احدها يكون نفس الشيء

اما انا مخطيء ؟

اسف ع الاطاله

شكرا لك ياريت لو تعطوني الطرقة بشرح بسيط فانا مازلت مبتدأ

easytemplate.rar

تم تعديل هذه المشاركة بواسطة f8athy في 8 أغسطس 2009 في 10:03

564x.jpg
#22

يدويا بمعنى ان جميع اوامر include تكون hard coded... فيها فقط نص بدون متغيرات

نعم هذا البرنامج لايتحقق من الملفات بشكل كامل قبل فتحها.... فعلا خطر

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#23
Ryn كتب:
يدويا بمعنى ان جميع اوامر include تكون hard coded... فيها فقط نص بدون متغيرات

الآن فهمت قصدك لكن أنظر ما أريد أنا

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

function _footer_bottom()
            {
           $file_dir21                 = $path_dir."/footer_bottom.ch";
           $readfile21                 = @fopen($file_dir21,"r");

           if (!$readfile21)
           {

             // get seting
                 $sql_seting = @mysql_query("SELECT * FROM seting ")
                                or die ("خطأ في جلب جدول الإعدادات");
              $tpl_seting = @mysql_fetch_array($sql_seting);


              // for artcle name
              $tpl_seting[portal_name]  = stripslashes($tpl_seting[portal_name]);
              $tpl_seting[portal_vrs]   = stripslashes($tpl_seting[portal_vrs]);

                $this->_assign($tpl_style['footer_bottom'],'{portal_name}',$tpl_seting[portal_name]);
                $this->_assign($tpl_style['footer_bottom'],'{portal_vrs}',$tpl_seting[portal_vrs]);
                $this->_assign($tpl_style['footer_bottom'],'{img_path}',$images_path);

                // content of the header
             $print_footer_bottom       = $tpl_style['footer_bottom'];

             // check the folders and the files
              if(!is_dir($path_dir))
              {
                $mkdir          = @mkdir ($path_dir, 0755, true);
                @fclose ($mkdir);
              }

              $writefile21       = @fopen($file_dir21,"w");
              $addtofile21       = @fwrite($writefile21,$print_footer_bottom);


              @fclose ($writefile21);
              @fclose ($addtofile21);
              @mysql_free_result($sql_seting);
           }

           @fclose ($readfile21);
           @mysql_free_result($sql_style);

          include($file_dir21);  // لاحظ أليست ثغرة

         }

لذا قلت اجعل دالة حماية لان عدد الملفات التي سأكتبها كثيرة ولايمكنني كل مرة أن أكتب التحقيق ولايمكنني كذلك أن أزرع الملف يدويا فهو متغير على حسب المسار المعطى والاسم

Ryn كتب:
نعم هذا البرنامج لايتحقق من الملفات بشكل كامل قبل فتحها.... فعلا خطر

إذن يجب التحقق يدويا

أخي مارايك لو تعطيني دالة تحمي من الفايل أنكلود والريموت انكلود من كتابتك وتكون فعالة

مع تحياتي

564x.jpg
#24

هنا انت تتاكد ان path_dir مجلد.... تأكد ايضا انه موجود في المكان الصحيح ، بشكل عام هذا ليس خطير...لان حتى ولو غير المجلد انت تكتب نفس اسماء الملفات.. لن يستطيع التاثير على برنامجك.

بالعاده انا اكتب الداله باستخدام whitelist filtering بمعنى ... لو عندي مجلد

/home/user/public_html/templates

داخله مجموعه ملفات اضيفها بشكل تلقائي... يحدد الملف المستخدم عن طريق GET

?page=somename

راح اعمل التحقق بالطريقه هذي

<?
$page=$_GET['page'];
if(ereg ("([a-zA-Z\-_.]{1,40})", $_GET['page'])===FALSE)
{ $page=''; }
?>

تم تعديل هذه المشاركة بواسطة Ryn في 9 أغسطس 2009 في 08:04

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#25
Ryn كتب:
هنا انت تتاكد ان path_dir مجلد.... تأكد ايضا انه موجود في المكان الصحيح ، بشكل عام هذا ليس خطير...لان حتى ولو غير المجلد انت تكتب نفس اسماء الملفات.. لن يستطيع التاثير على برنامجك.

إذن التحقق كافي للحماية شكرا لك

Ryn كتب:
بالعاده انا اكتب الداله باستخدام whitelist filtering بمعنى ... لو عندي مجلد

/home/user/public_html/templates

داخله مجموعه ملفات اضيفها بشكل تلقائي... يحدد الملف المستخدم عن طريق GET

?page=somename

راح اعمل التحقق بالطريقه هذي

<?
 $page=$_GET['page'];
 if(ereg ("([a-zA-Z\-_.]{1,40})", $_GET['page'])===FALSE)
 { $page=''; }
 ?>

فعلا طريقة جيدة

ولكن أضنها لن تفيدني لاني أريد زرع جزء من الصفحة في كل مرة يعني في الأول

الهيد ثم الهيدر ثم القائمة ثم الموضوع ثم الفوتر كيف سأضيف كل هذه الصفحات في مرة واحدة من خلال العنوان

564x.jpg

مواضيع مشابهة