هل يؤثر استخدام magic_quotes () على استخدام mysql_real_escape_string ()
-
30-09-2019 - |
سؤال
لو كنت أملك 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;
}