• php
  • 1868
  • 20-3-2008
  • ما هو magic quotes
    هي ان يتم اضافة تلقائيا عند كتابة أي شيء " حمله أو رقم " يحتوى علامة الأقتباس ( ' ) .
    الوضع الأفتراضي : مفتوح
    الوضع الخطر : مغلقة
    السبب :
    تسبب مشاكل امنيه من ابرزها مشاكل SQL Injection و التي تسمح بإستمرار الاستعلام و استخدام اوامر SQL . و لتفادي هذه المشكله يجب استخدام الداله addslahes لإضافة السلاش .
    مثال " منقول "
    لنفرض لدينا هذا الاستعلام
    $query = mysql_query('SELECT * FROM table WHERE string=' . $_GET['string'] . '');

    و ـmagic quote مغلقه قد تسبب ثغره امنيه , لتفادي مثل هذه المشاكل يجب ان نتحقق اذا كانت ـmagic quote مغلقه نستخدم addslashes و اذا كانت تعمل فنحن في امان , سوف نستخدم الداله get_magic_quotes_gpc حتى نتعرف على حالة الـ magic quote .
    <?php
    if (get_magic_quotes_gpc() == 0) {
    $_GET['string'] = addslashes($_GET['string']);
    }
    $query = mysql_query('SELECT * FROM table WHERE string=' . $_GET['string'] . '');
    ?>

    يمكننا استخدام هذه الفكره للمصفوفات $_GET و $_POST و $_COOKIE بشكل عام , حتى نحمي برنامجنا من ـmagic quote في حالة الاغلاق
    <?php
    if (get_magic_quotes_gpc() == 0) {
    $_GET = array_map('addslashes', $_GET);
    $_POST = array_map('addslashes', $_POST);
    $_COOKIE = array_map('addslashes', $_COOKIE);
    }
    ?>

    بالتوفيق للجميع
    الكاتب : php-Tiger
    كن أول من يقيم الموضوع
    12345