سؤال

لو كنت أملك magic_quotes تم تشغيله وأستخدمه mysql_real_escape_string, ، هل سيتم هروب السلسلة؟ هل سيسبب مشاكل؟

أفترض ذلك على أساس get_magic_quotes() وظيفة ولكن مجرد البحث عن التأكيد.

(PS من الأسهل طرح هذا السؤال بدلاً من اختباره في مكتبي مع كل الأمن الذي لدينا في مكانه - يستغرق الأمر 10-15 لتكوين كل شيء للحصول على بيئة قابلة للاستخدام)

هل كانت مفيدة؟

المحلول

إذا هربت من قيمة تم الحصول عليها من إدخال GET/POST/ملف تعريف الارتباط ، فستكون بالفعل addslashes() تطبق عليها ، لذلك تمريرها من خلال mysql_real_escape_string() في الواقع ، اقتباس مزدوج.

لتجريد م:

if (get_magic_quotes_gpc())
{
    $_GET = json_decode(stripslashes(json_encode($_GET, JSON_HEX_APOS)), true);
    $_POST = json_decode(stripslashes(json_encode($_POST, JSON_HEX_APOS)), true);
    $_COOKIE = json_decode(stripslashes(json_encode($_COOKIE, JSON_HEX_APOS)), true);
    $_REQUEST = json_decode(stripslashes(json_encode($_REQUEST, JSON_HEX_APOS)), true);
    ini_set('magic_quotes_gpc', 0);
}

هذا السؤال لديه بعض الخيارات الأخرى لتجريد الاقتباسات / التعامل مع الرهيبة magic_quotes_gpc PHP "ميزة".

نصائح أخرى

إقرأ ال توثيق mysql_real_escape_string (آمل ألا يكون هذا أمرًا صعبًا أيضًا):

ملحوظة: إذا magic_quotes_gpc تم تمكينه ، تطبيق أولاً stripslashes() إلى البيانات. إن استخدام هذه الوظيفة على البيانات التي هربت بالفعل سوف يفلت من البيانات مرتين.

بالطبع ، أسهل طريقة هي إيقاف تشغيل magic_quotes.
wuth wuth php/apache config ، هذا السطر

php_flag magic_quotes_gpc 0

في ال .htaccess سيفعل الملف الشيء.

ولكن لغرض التوافق ، يمكن استخدام وظيفة في بعض ملفات التكوين أيضًا.

if ( get_magic_quotes_gpc( ) ) {
  $_GET = array_map_recursive('stripslashes', $_GET) ;
  $_POST = array_map_recursive('stripslashes', $_POST) ;
  $_COOKIE = array_map_recursive('stripslashes', $_COOKIE) ;
  $_REQUEST = array_map_recursive('stripslashes', $_REQUEST) ;
  if (isset($_SERVER['PHP_AUTH_USER'])) stripslashes($_SERVER['PHP_AUTH_USER']); 
  if (isset($_SERVER['PHP_AUTH_PW'])) stripslashes($_SERVER['PHP_AUTH_PW']);
}

واحدة من أسهل

إذا تم تشغيل Magic_quotes واستخدمت mysql_real_escape_string ، فهل سيتم هروب tring؟

نعم ، سيفعل ذلك ولكن يمكنك أن تفعل شيئًا كهذا على الرغم من:

if (get_magic_quotes_gpc())
{
  $escaped = stripslashes($your_vars);
}

ملحوظة: يمكنك تعطيل عروض الأسعار السحرية من php.ini أو استخدام الوظيفة أدناه لتجاوزها:

// no more magic quotes
function get_magic_quotes_gpc()
{ 
  return false;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top