معلومات عن magic_quotes_gpc

1-معلومات بسيطه :
magic_quotes_gpc عباره عن خاصيه في البي اتش بي عند تفعيلها تقوم بأضافته Backslash على ‘ او ” او \
والفائده من هذا منع من مرور الرموز سليمه لكي يتجنب بعض انواع الثغرات مثل sql injection
ولاكن يوجد بعض المشاكل فيها عندما نرسل معلومات نريد ان لايتم تغيرها مثل You’re The Best
اذا كان مفعل بيتم طباعه التالي
You\'re The Best
واذا لم يكون مفعل بيتم طباعته هكذا
You're The Best

2-بعض التطبيقات:
الان لتفعيلها نبحث داخل ملف php.ini عن magic_quotes_gpc اذا كانت Off نحولها الى On
وننشاء ملف داخل مساحه ونضع الاكواد التاليه

<?php
$text=$_GET;
print $text;
?>

ونستعرض الملف هاكذا
http://xxx.com/file.php?text=You're The Best
نلاحظ انه تم اضافه الرمز \ قبل ‘
اغلق الخاصيه من ملف php.ini حولها الى Off وعد المحاوله سوف تلاحظ انه لم يتم اضافه اي رمز

3-لتجنب الثغرات في ملفات php والخاصيه مغلقه نستخدم الداله addslashes ستقوم بنفس عمل الخاصيه نطبق والخاصيه مغلقه ضع الملف هذا

<?php
$text=addslashes($_GET);
print $text;
?>

استعرض الملف
http://xxx.com/file.php?text=You're The Best

نلاحظ انه تم اضافه \ قبل الرموز والخاصيه مغلقه ..

4-اذا كانت الخاصيه مفعله ونريد حذف \ ليتم طباعه النص مثل ماهو مرسل نستخدم الداله stripslashes وهي عكس الداله السابقه تحذف \ التي قبل ‘ او ” او \
مثال والخاصيه magic_quotes_gpc مفعله :

<?php
$text=stripslashes($_GET);
print $text;
?>

استعرض الملف
http://xxx.com/file.php?text=You're The Best
نلاحظ انه تم حذف \ السابقه للرموز

5- اذا كنا لانعلم هل الخاصيه مفعله ام لا داخل السيرفر نستخدم الداله get_magic_quotes_gpc
مثال :

<?php
$text=$_GET;

if(get_magic_quotes_gpc() = 1){
$text=stripslashes($text);
}

print $text;

?>

نلاحظ انه لو الخاصيه مفعله او مغلقه تم حذف \ قبل الرموز

6-الان للتأكد من عمل الخاصيه او لا لاننا نريد اضافه \ قبل اي من الرموز السابقه
مثال :

<?php
$text=$_GET;

if(get_magic_quotes_gpc() != 1){
$text=addslashes($text);
}

print $text;
?>

نلاحظ انه لو الخاصيه مفعله او مغلقه تم اضافه \ قبل الرموز

ملاحظه : الخاصيه ليست محصوره على GET بل تستخدم في GET / POST / COOKIE

أترك تعليقك

2 تعليقات.

  1. شرح وافي و كافي وسلمت يداك اخي الفاضل .

    لكن يوجد لدي استفسار بسيط ؟

    أستخرجت من الموقع ملف php.ini ولكن لم اجد magic_quotes_gpc

    مع ان موقعي طالب تعطيل magic_quotes_gpc ..

    فماهو الحل لهذة المشكلة

    • قم باضافة السطر في ملف php.ini
      magic_quotes_gpc = off
      اسف على الرد المتأخر .. ولكن انقطعت عن التدوين فتره

أترك تعليقك


[ Ctrl + Enter ]