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

0 تعليقات.