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

الموضوع: مهم جدا يا شباب ,, أبغا كود لفحص المدخل عن طريق GET

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

    مهم جدا يا شباب ,, أبغا كود لفحص المدخل عن طريق GET



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

    ياشباب لنفرض أن لدي الرابط التالي لأحد أقسام برنامجي
    www.mysite.com?cat=4

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





    __________________
    ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
    فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه


  2. #2


    السلام عليكم

    جرب التالي , اذا ما كنت مخطئ ان شاء الله يشتغل

    كود PHP:
    $cat $_GET['cat'];

        if( 
    ereg"^[0-9]+$" $cat ) )
        {
            echo 
    " number ";
        }
        else
        {
            echo 
    " not number ";
        } 
    اذا اخطأت ان شاء الله الشباب يساعدون

    تحياتي لك





    __________________
    محمد الرحيلي
    http://www.alrehaili.net
    http://www.arccn.net
    http://www.mafgod.com
    mohammad@arccn.net

  3. #3
    عضو فعال
    تاريخ التسجيل
    Feb 2002
    المشاركات
    1,247


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

    ماهي طريقتكم للتشييك على الروابط والتأكد من أن القيمة المدخلة لاتشكل خطرا على البرنامج .. خاصة إذا كانت قيمة المتغير في الرابط على شكل string حرفي





    __________________
    ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
    فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    May 2004
    المشاركات
    355


    مالي خبرة كبيرة في النواحي الأمنية .. بس أستخدم الدوال المستخدمة في منتدى الآي بي


    هالدالة لمعالجة القيم المرسلة عن طريق ال GET

    كود PHP:

        
    /*-------------------------------------------------------------------------*/
        // Clean value
        /*-------------------------------------------------------------------------*/

        
    function clean_value($val)
        {
     
                if (
    $val == "")
                {
                        return 
    "";
                }

                
    $val str_replace" "" "$val );

                
    $val str_replacechr(0xCA), ""$val );  //Remove sneaky spaces
     
                
    $val str_replace"&"            "&"         $val );
                
    $val str_replace"<!--"         "<!--"  $val );
                
    $val str_replace"-->"          "-->"       $val );
                
    $val preg_replace"/<script/i"  "<script"   $val );
                
    $val str_replace">"            "&gt;"          $val );
                
    $val str_replace"<"            "&lt;"          $val );
                
    $val str_replace"\""           "&quot;"        $val );
                
    $val preg_replace"/\n/"        "<br />"        $val ); // Convert literal newlines
                
    $val preg_replace"/\\\$/"      "$"        $val );
                
    $val preg_replace"/\r/"        ""              $val ); // Remove literal carriage returns
                
    $val str_replace"!"            "!"         $val );
                
    $val str_replace"'"            "'"         $val ); // IMPORTANT: It helps to increase sql query safety.

                // Ensure unicode chars are OK

                  
    $val preg_replace("/&amp;#([0-9]+);/s""&#\\1;"$val );
     
                  
    // Strip slashes if not already done so.

                  
    $val stripslashes($val);

                 
    // Swop user inputted backslashes

                
    $val preg_replace"/\\\(?!&amp;#|\?#)/""\"$val );

                return 
    $val;
        } 

    أنا أثق في هالدوال وأعتمد عليها

    ومثل ماذكرت هي المستخدمه في منتدى ال Invision Power


    هل من الممكن أن يكون ذلك كافيا لسد ثغرة تمرير قيم أو روابط أو استعلامات غير مأمونة عن طريق الرابط إذا كانت القيمة رقمية ؟؟
    من ناحية القيم الرقمية أنا أستخدم الدالة intval لو كان المتغير رقم بتعطيك true لو كانةغير رقمى بتعطيك false هذي الطريقة اللى أتبعها للتحق من سلامتة المتغيرات الرقمية والله يستر لا يكون بالإمكان التحايل على هالطريقة

    :con2: ياليت نشوف آراء الخبراء





    __________________
    وما أكثر الأصحاب حين تعدهم

    ولكنهم عند النائبات قليل

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


    ياسلام عليك أخي شامل أشكرك على الإضافة هذي

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

    هل فيه دالة جاهزة للتشييك على قيم المتغيرات المررة عن طريق الرابط





    __________________
    ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
    فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه

  6. #6
    عضو نشيط جدا
    تاريخ التسجيل
    May 2004
    المشاركات
    355


    اقتباس المشاركة الأصلية كتبت بواسطة Dr.Server
    ياسلام عليك أخي شامل أشكرك على الإضافة هذي

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

    هل فيه دالة جاهزة للتشييك على قيم المتغيرات المررة عن طريق الرابط
    في منتدى الآي بي هالدالة تستخدم لجميع البيانات سواء من خلال ال GET أو ال POST والأمور اللى ممكن تمرر عن طريق ال POST اعتقد ممكن يمررها المخترق من خلال ال url

    :con2: طبعا الدالة هذي لل Value فقط ... هناك دالة أخرى لل KEY

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

    أنا أستخدمها للبايانات القادمة سواء من ال GET او ال POST

    :con2: نبي ردود الخبراء خلنا نستفيد





    __________________
    وما أكثر الأصحاب حين تعدهم

    ولكنهم عند النائبات قليل

  7. #7


    اذا كان المطلوب فقط معرفة ما إذا كان المطلوب "رقم" أو من نوع (integer) فاستخدم اما:
    كود PHP:
    <?php
    $_GET
    ['cat'] = (int) $_GET['cat'];
    ?>
    أو دالة is_int()
    كود PHP:
    <?php
    if(is_int($_GET['cat'])
    {
     echo 
    'Integer';
    }
    else
    {
     echo 
    'Not Integer';
    }
    ?>
    في الحالة الأولى سوف يتم تحويل قيمة المتفير $_GET['cat'] إلى متغير عددي (integer)
    وفي الحالة الثانية استخدمت الدالة is_int() للتحقق من أن المتغير هو متغير عددي

    للمزيد من المعلومات حول دالة is_int() : http://www.php.net/is_int

    وللمزيد من المعلومات حول الحماية راجع http://www.php.net/manual/en/security.php







    __________________
    ArabBB ... SoooooN!

  8. #8


    السلام عليكم

    بالنسبه لطريقة ال CASTING

    الي هي كالتالي

    كود PHP:

    <?php
    $_GET
    ['cat'] = (int) $_GET['cat'];
    ?>
    لا تستخدمها لو اردت عمل اشياء اخرى بالمتغير بعد التحقق من الرقم ,, لان هذه الطريقه لحظيه , تقوم بالتغير في لحظه ويرجع المتغير كما كان

    لاحظ التالي

    كود PHP:

    <?

        $cat 
    "mohammad";

        echo (int) 
    $cat;

        echo 
    "<br>".$cat;

    ?>


    ولكن الداله التاليه تقوم بالتغير كاملا , اي سوف يكون المتغير بعد ذلك من النوع integer
    لاحظ التالي:

    كود PHP:

    <?

        $cat 
    "mohammad";

        
    settype$cat integer );

        echo 
    $cat;

    ?>
    تحياتي لك





    __________________
    محمد الرحيلي
    http://www.alrehaili.net
    http://www.arccn.net
    http://www.mafgod.com
    mohammad@arccn.net

  9. #9
    عضو نشيط جدا
    تاريخ التسجيل
    May 2004
    المشاركات
    355


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

    بالنسبه لطريقة ال CASTING

    الي هي كالتالي

    كود PHP:

    <?php
    $_GET
    ['cat'] = (int) $_GET['cat'];
    ?>
    لا تستخدمها لو اردت عمل اشياء اخرى بالمتغير بعد التحقق من الرقم ,, لان هذه الطريقه لحظيه , تقوم بالتغير في لحظه ويرجع المتغير كما كان

    لاحظ التالي

    كود PHP:

    <?

        $cat 
    "mohammad";

        echo (int) 
    $cat;

        echo 
    "<br>".$cat;

    ?>

    الله يجزاك الجنة

    :eek2: معلومة خطيرة وقوية





    __________________
    وما أكثر الأصحاب حين تعدهم

    ولكنهم عند النائبات قليل

  10. #10
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    معلومات مفيدة ماشاء الله

    أنا أستخدم للأرقام التي ترسل بواسطة GET الطريقة المذكورة لكن مع تعديل صغير لتغيير طبيعتها (دمج طريقة الأخوين محمد والمبرمج):
    كود PHP:
    $page = (int) $_GET['page']; 
    ثم أستخدم page على أساس أنه هو المتغير الرئيسي وليس GET الخاص به .. وهذا الأمر يعني أن المتغير page يجب أن يكون من نوع "رقم صحيح" وأن يحتوي القيمة الرقمية للمتغير GET ..

    بالنسبة للمتغيرات النصية لا أحتاج لأكثر من:
    كود PHP:
    $page strip_tags($_GET['page']); 
    حيث لا أدخل المتغير نفسه في أي عمليات .. فقط أستخدمه كمحدد لحالات التنفيذ .. وأعتقد أن هذا الأمر يعطي نفس نتيجة الكود الخاص بالمنتدى يا أخ شامل .. يمكن يتبقى له بعض الرموز مثل ' & وهكذا .. بس هذا يعتمد على طبيعة استخدامك لقيمة المتغير ..





    __________________
    ....
    محمد حسام
    انترنت بلس

  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    May 2004
    المشاركات
    355


    اقتباس المشاركة الأصلية كتبت بواسطة إنترنت بلس
    معلومات مفيدة ماشاء الله

    أنا أستخدم للأرقام التي ترسل بواسطة GET الطريقة المذكورة لكن مع تعديل صغير لتغيير طبيعتها (دمج طريقة الأخوين محمد والمبرمج):
    كود PHP:
    $page = (int) $_GET['page']; 
    ثم أستخدم page على أساس أنه هو المتغير الرئيسي وليس GET الخاص به .. وهذا الأمر يعني أن المتغير page يجب أن يكون من نوع "رقم صحيح" وأن يحتوي القيمة الرقمية للمتغير GET ..

    بالنسبة للمتغيرات النصية لا أحتاج لأكثر من:
    كود PHP:
    $page strip_tags($_GET['page']); 
    حيث لا أدخل المتغير نفسه في أي عمليات .. فقط أستخدمه كمحدد لحالات التنفيذ .. وأعتقد أن هذا الأمر يعطي نفس نتيجة الكود الخاص بالمنتدى يا أخ شامل .. يمكن يتبقى له بعض الرموز مثل ' & وهكذا .. بس هذا يعتمد على طبيعة استخدامك لقيمة المتغير ..
    الله يجزاك خير على هالمعلومات القيمة ..

    وياليت تفيدنا بخبرتك وتجيبني على إستفساري

    لو المتغير القادم من ال GET راح أستخدمه لحالات التنفيذ Action معناته مافيه خوف إنشاء الله

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

    هل تكفى الدالة strip_tags ؟؟

    أيضا في حالة ال action أنا بصراحة ما أقوم بمعالجة المتغيرات القادمة إلا إذا كنت راح أستخدمها في الداتا بيس أما في ال action لا أقوم بمعالجة البيانات :con2: هل هناك خطر ما ؟؟

    وزادك الله علما





    __________________
    وما أكثر الأصحاب حين تعدهم

    ولكنهم عند النائبات قليل

  12. #12
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    جزاك الله خيرا وبارك لك ..

    بصفة خاصة: استخدام strip_tags راح يخلص المدخلات من الأكواد البرمجية .. لكن تظل عندك الرموز وأخطرها ";" (لأنها الفاصل بين أمرين في الداتابيز) .. وأعتقد أن استخدام htmlspecialchars وaddslashes يخلصنا تماما من رعب حقن قواعد البيانات ..

    بصفة عامة: أنا أتصور (يعني نظرة شخصية للموضوع) أن الأساس ليس في دوال معالجة المدخلات وفحص المتغيرات .. أتصور أن الأساس في طريقة التفكير البرمجي .. مثلا لا تستخدم متغير الجيت كما هو .. استخدم متغيرا آخر قيمته تعتمد على الجيت .. هذه نقطة .. النقطة الأهم هي تقليل مدخلات الجيت النصية إلى أقل مستوى وزيادة المتغيرات الرقمية .. لأنك في الرقمية يمكنك إجراء كل ما تريده على المتغير .. حتى فحص نطاق الرقم يعني مثلا أن يكون بين 1 و 20 مثلا .. فيمكنك التحكم تماما فيه ونسيان أي مشاكل ..
    أما النصية فأتمنى أن تكون الدوال: strip_tags وhtmlspecialchars وaddslashes كافية ..

    وننتظر مشاركات بقية إخواننا لأهمية الموضوع .. وأكيد كل منا له تجارب مفيدة





    __________________
    ....
    محمد حسام
    انترنت بلس

  13. #13
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    بحثت شوية في الإنترنت ووجدت الموضوع ده:
    http://www.webmasterworld.com/forum88/7677.htm
    واللي فيه dmmh بيقول ان:
    mysql_real_escape_string
    هي الحل وأنه ممكن ما تحتاجش غيرها ..
    عمال أقرا عنها في المانيوال ..





    __________________
    ....
    محمد حسام
    انترنت بلس

  14. #14
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2003
    المشاركات
    461
    __________________
    AlwatanVoice, www.alwatanvoice.com
    Almashroo, www.almashroo.com

    Pal Coder == Palestinian Coder

  15. #15
    عضو فعال
    تاريخ التسجيل
    Feb 2002
    المشاركات
    1,247


    Al Mobarmeg المبرمج
    محمد الرحيلي
    إنترنت بلس
    Pal Coder

    أشكركم عظيم الشكر على المشاركة في الموضوع .. وصلت الفائدة جزاكم الله خير وكثر من أمثالكم





    __________________
    ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
    فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه





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

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

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