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

الموضوع: من أجل الأمان

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065

    من أجل الأمان



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

    كنت أقرأ فى موضوع الأمان فى إدخال المدخلات ووجدت على موقع php.net فى أحد التعليقات عن الدالة addslashes شرح رائع عن ذلك الأمر و هى دالة خاصة قام ببنائها بناء على أحوال السيرفر و اوضاعه و كانت الدالة كالتالى

    كود PHP:
    <?php
    function disable_magic_quotes_gpc()
    {
        if (
    TRUE == function_exists('get_magic_quotes_gpc') && == get_magic_quotes_gpc())
        {
            
    $mqs strtolower(ini_get('magic_quotes_sybase'));

            if (
    TRUE == empty($mqs) || 'off' == $mqs)
            {
                
    // we need to do stripslashes on $_GET, $_POST and $_COOKIE
            
    }
            else
            {
                
    // we need to do str_replace("''", "'", ...) on $_GET, $_POST, $_COOKIE
            
    }
        }
        
    // otherwise we do not need to do anything
    }
    ?>

    أرجو من الجميع أن يخبرونا بما يستخدموه من أجل الحمايه فى هذا الجزء من البرنامج (الجزء الخاص بإدخل و إستخراج البيانات)







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


    لنصوص استخدم mysql_real_escape_string
    وللأرقام استخدم intval






  3. #3


    هذه الدالة كالتالي
    قديما اخي كان يوجد خيار اسمه magic_quotes في ملف php.ini
    حيث كانت تقوم ال php وحدها بالتدخل وتأمين المدخلات بوضع \ قبل كل ' وذلك لتستطيع إدخالها قاعدة البيانات مباشرة بدون اي دوال مسبقة وكذلك لامور اخري

    لا اعلم هل كان هذا الخيار مفعل افتراضي ام معطل افتراضي ولكن ال php قرروا حذفه من الأساس

    المشكلة الأن انك حينما تبرمج برمجية لا تعلم حالة السيرفر اللي هتعمل عليه البرمجية ان كانت مفعلة ام لا
    فلو طبقت addslashes وكان الخيار مفعل فستجد ان كل ' امامها 2 من الباك سلاش
    \\'

    وهذه ثغرة بالطبع
    فالباك سلاش الأولي عطلت الثانية وظلت ' فعالة وتعمل عملها بشكل طبيعي ( كما تعلم الباك سلاش تعطل ما خلفها وتظهره كنص ولا يطبق )

    وظيفة هذه الدالة ان تختبر الخيار موجود علي السيرفر ام لا ( حسب اصدارات ال php ) ولو كان موجود مفعل ام لا
    لو مفعل فهناك حالتين حسب magic_quotes_sybase
    لو كانت magic_quotes_sybase معطلة فأنت ستحذف ال \ ليعود لك المدخل كما هو بالضبط في الأصدارات الحديثة لل php ولا كأن magic_quotes موجودة أصلا وعليه فأنه عليك اعادة تطبيق حمايتك الخاصة وليكن addslashes مرة أخري !!

    لو كانت magic_quotes_sybase غير معطلة فستستخدم str_replace("''", "'", ...) علي المدخل

    بالطبع لو كنت تستخدم كلاس حماية خاصة او دالة فعليك تمرير كل مدخلاتك علي هذه الدالة لتتخلص من مشكلة magic_quotes

    وعليه فهذه الدالية ليست دالة حماية ولكنها من اسمها واضح وهي دالة لتعطيل magic_quotes لو كانت موجودة وجعل الحالة الأفتراضية هي disable دائماً





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

  4. #4
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    شوف الداله دية وان شاء الله تعجبك

    كود PHP:
    <?php
    /** 
      * ##############################################
      * ##برمجة محمدهلال                             ##
      * ##جميع الحقوق محفوظة لي محمدهلال             ##
      * ##    mohamedhelal                            ##
      * ##all rights to mohamedhelal                 ##
      * ##email:mohamed_helal123456@hotmail.com        ##
      * ##############################################
      */
      
    function insert_save()
      {
          if(
    count($_GET)>0)
          {
              foreach(
    $_GET as $key=>$value)
              {
                  
    $_GET[$key]=(numer($value))?intval($value):htmlspecialchars(addslashes(trim($value)));
              }    
          } 
          if(
    count($_POST)>0)
          {
              foreach(
    $_POST as $key=>$value)
              {
                  
    $_POST[$key]=htmlspecialchars(addslashes(trim($value)));
              }    
          } 
      }
      function 
    numer($str)
      {
          if(
    preg_match('/^[0-9]+$/',$str))
          {
              return 
    true;
          }
          else
          {
              return 
    false;
          }
      }
      
    ?>






    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  5. #5
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    جزاكم الله خيراً على تعاونكم الجميل


    و
    عليه فهذه الدالية ليست دالة حماية ولكنها من اسمها واضح وهي دالة لتعطيل magic_quotes لو كانت موجودة وجعل الحالة الأفتراضية هي disable دائماً
    و لكنها حماية من ال SQL injection و جزاك الله كل خير على ما قمت بشرحه شرحاً وافياً موضحاً جزاك الله عليه كل خير


    و إسمحلى أخى محمد هلال بإستخدام دالتك الرائعه و التى تعمل بدون إمرار شئ لها


    وجدت داله أخرى

    كود PHP:
    function injection_security($mtwer) { 
    if(
    is_array($mtwer)) { 
    $mtwer array_map('security'$mtwer); 
    } else { 
    if(!
    get_magic_quotes_gpc()) { 
    $mtwer htmlspecialchars($mtwerENT_QUOTES); 
    $mtwer=addslashes(trim($mtwer)); 
    } else { 
    $mtwer htmlspecialchars(stripslashes($mtwer), ENT_QUOTES); 
    $mtwer=addslashes(trim($mtwer)); 

    $mtwer str_replace("\\""\\\\"$mtwer); 

    return 
    $mtwer

    مارأيكم بها ؟؟؟






  6. #6
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    جزاكم الله خيراً على تعاونكم الجميل


    و

    و لكنها حماية من ال SQL injection و جزاك الله كل خير على ما قمت بشرحه شرحاً وافياً موضحاً جزاك الله عليه كل خير


    و إسمحلى أخى محمد هلال بإستخدام دالتك الرائعه و التى تعمل بدون إمرار شئ لها


    وجدت داله أخرى

    كود PHP:
    function injection_security($mtwer) { 
    if(
    is_array($mtwer)) { 
    $mtwer array_map('security'$mtwer); 
    } else { 
    if(!
    get_magic_quotes_gpc()) { 
    $mtwer htmlspecialchars($mtwerENT_QUOTES); 
    $mtwer=addslashes(trim($mtwer)); 
    } else { 
    $mtwer htmlspecialchars(stripslashes($mtwer), ENT_QUOTES); 
    $mtwer=addslashes(trim($mtwer)); 

    $mtwer str_replace("\\""\\\\"$mtwer); 

    return 
    $mtwer

    مارأيكم بها ؟؟؟

    جزاك الله خيرا اخي الكريم

    حلو بس لا تستخدم دالة get_magic_quotes_gpc عشان هي اتحذفة من php خالص

    وكمان بدل الداله الي انا عملها بدية

    كود PHP:
     
     
    function insert_save() 
      { 
          if(
    count($_GET)>0
          { 
              foreach(
    $_GET as $key=>$value
              { 
                  
    $_GET[$key]=(is_int($value))?intval($value):addslashes(trim($value)); 
              }     
          }  
          if(
    count($_POST)>0
          { 
              foreach(
    $_POST as $key=>$value
              { 
                  
    $_POST[$key]=(is_int($value))?intval($value):addslashes(trim($value)); 
              }     
          }  
      } 
    وتابع هذا الموضوع

    http://forum.montadaphp.net/t6428/





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  7. #7
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    جزاك الله خيراً أخى هلال










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

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

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