النتائج 1 إلى 7 من 7

الموضوع: حماية المدخلات

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    213

    حماية المدخلات



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

    رابط الموضوع الأصلي من منتدى بي اتش بي
    http://www.montadaphp.net/t4071/

    الموضوع كما هو :

    السلام عليكم ورحمة الله وبركاته،،
    حماية برنامجك من مدخلات php & javascript

    ربما لا يعرفني أعضاء هذا المنتدى ولكني من المتابعين له بشكل كبير،، وسأكتب اليوم موضوع عن الحماية كرد لجميل هذا المنتدى وأعضاءه الكرام..

    باختصار:
    عندما تتلقى المتغير من نموذج فالغالبية يقومون بالتالي:
    كود PHP:
    $word $_GET['word'];
    $num $_POST['num']; 
    ثم يقوم بحماية المتغيرات بهذه الطريقة:
    كود PHP:
    $word safe($word); 
    وللتأكد من خطورة هذه الطريقة جرب إرسال هذا الكود

    http://www.site.com/?word=<script>alert(1);</script>
    ستلاحظ أنه سيتم تشغيل كود الجافا سكريبت..
    طبعا هذا الكود بسيط، تخيل اذا كان كود جلب معلومات الكوكي........

    للحماية من هذا الخطر سنقوم بحماية المتغيرات قبل كل شيء على النحو التالي:
    كود PHP:
    $word=safe($_GET['word']);
    $num safe($_POST['num']); 
    الآن يأتي دور لدالة safe

    كود PHP:
    function safe($this)
    {
        //$word = trim($this);
        //$vlink = nl2br($vlink);
        #*****$word = preg_replace("/(<\/?)(\w+)([^>]*>)/e","",$string);
        //$word = htmlentities($word);
        #*****$word = htmlspecialchars($word, ENT_QUOTES);
        #*****$word = addslashes($word);
        #*****$word = strip_tags($word);
        //$word = htmlentities($word);
        //$word = stripslashes($word);
        #$trans = get_html_translation_table(HTML_ENTITIES);
        #$word = strtr($word, $trans);
        //$vlink = str_replace($xarray,'',$vlink);
        $a = array('<?','?>','<%','%>');

        $text = str_replace($a,'',$this);
        $text = str_replace('"','',$text);
        $text = str_replace("'",'',$text);
        $text = strip_tags($text, '<p><a>');
        //$text = htmlentities($text);
        $trans = get_html_translation_table(HTML_ENTITIES);
        $encoded = strtr($text, $trans);

        $text = stripslashes($text);
        //$text = addslashes($text);
        //$text = quotemeta($text);

        return $text;
    }
    طبعاً يمكنك تجربة بقية دوال الحماية في هذه الدالة ، ولزيادة الحماية أكثر حماية كالتالي:

    كود PHP:
    function safe($string)
    {
        
    //$vlink = $string;
        
    $word trim($string);
        
    #$vlink = strip_tags($vlink);
        //$vlink = nl2br($vlink);
        
    $word preg_replace("/(<\/?)(\w+)([^>]*>)/e","",$string);
        
    //$word = htmlentities($word);
        
    $word strip_tags($word);
        
    //$word = htmlentities($word);
        //$word = stripslashes($word);
        
    $word htmlspecialchars($wordENT_QUOTES);
        
    #$trans = get_html_translation_table(HTML_ENTITIES);
        #$word = strtr($word, $trans);

        
    $xarray = array (
                
    "\.",        "\..",        "\...",        "\/",        "\"",        "\'",        "<",
                
    ">",         "*",        "#",        ";",        "\\",        "~",
                
    "\&",         "@",        "\!",        ":",         "-",        "_",
                
    "(",         ")",        "\"",       "'",        '?',        '/',
                
    '<',         '>',       ".",        ".",        "{",        "}",        "*",
                
    ',',        '$',        "|",        "[",        "]",        '\\',       '_',

                
    '~''!''@''#''$''^''*''('')''_''=''-',
                
    '['']''{''}'';'"'"':''<''>''?''.'","'/''\\',
                );

        
    //$vlink = str_replace($xarray,'',$vlink);
        //echo "($string -> $vlink)";

        
    $arr1 str_split($string);
        
    ######################################
        
    foreach ($arr1 as $str)              #
        
    {/////////////////////////////////////
            
    foreach ($xarray as $danger)     #
            
    {//-----------------------------//
                
    if($str == $danger)          #
                
    {define(D,'DANGER');}        #
            
    }//-----------------------------//
        
    }#####################################
        //echo T;
        /*
        foreach ($xarray as $danger)
        {     if(@eregi($danger,$word))
            {return false;}

            if(@$vlink ==$danger)
            {return false;}

            elseif($d !='DANGER')
            { return $word; }
        }*/
        
    if(!='DANGER')
        { return 
    $word; }
        else{return 
    false; }
        
    //return $vlink;

    أرجو منكم التصحيح إذا كان هناك ملاحظات

    -----------------------------------------------------------------------------------
    انتهى الموضوع

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





    التعديل الأخير تم بواسطة fares1 ; 29-03-2009 الساعة 07:21 PM


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    291


    بصراحه ما قرأت الكود بالتفصيل.. لكن بأي حال هذا black list filtering ممكن تسوي دالة افضل بناءً على البرنامج عندك.
    على أي حال ما يكفي دالة واحده لانك تحتاج input escaping و output filtering

    حاليا اكتب بحث لمادة ادرسها في الجامعه عن هذا الموضوع، بحاول اضع نسخه بعد ما انتهي منه (شهر بالكثير)






  3. #3
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    213


    يعطيك العافيه عالمرور اخ [Dynamic]

    ومستنين النسخه

    شكرا






  4. #4


    php 5.2 معها مكتبة للحماية للمدخلات والمخرجات بالكامل بدوال بسيطة
    أستخدمها راسموس أبو ال php نفسه في برمجية كان يقدمها للشرح
    PHP: Filter - Manual





    __________________
    السيف أصدق أنباء من الكتب

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    450

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


    اذا كنت لا تحتاج لادخال اكواد html في تعليقات الموقع او في مكان الادخال بالموقع انصحك باستخدام دالة strip_tags للادخال وهي تكفي عن ما سبق
    وعند العرض استخدم htmlspecialchars اذا كان نص والدالة intval اذا كانت البيانات رقمية مثل ال id للصفحات





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    213


    مشكورين يا شباب
    يعطيكم الف عافيه










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

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

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