register_globals - دراسة مفصلة - نسخة قابلة للطباعة +- الدعم العربي (https://www.mybbarab.com) +-- قسم : :: . + تطوير المواقع و المنتديات و لغات برمجة المواقع + . :: (https://www.mybbarab.com/forum-78.html) +--- قسم : قسم تطوير المنتديات والمواقع ولغات البرمجه (https://www.mybbarab.com/forum-117.html) +---- قسم : نقاش عام حول PHP و MYSQL (https://www.mybbarab.com/forum-49.html) +---- الموضوع : register_globals - دراسة مفصلة (/thread-468.html) |
register_globals - دراسة مفصلة - Pepo - 2007-03-21 السلام عليكم ورحمة الله وبركاته نبذة عن المشكلة مشكلة register_globals حدثت بعد طرح الاصدار PHP v.4.2.1، حيث تم جعل القيمة الافتراضية لـ register_globals تساوي off، مما أدى الى توقف الكثير والكثير من السكريبتات المطروحة قبل هذا الوقت والتي كانت تعتمد في عملها على الوضعية on لـ register_globals. ولكن لماذا تم تغيير القيمة الافتراضية لهذه الخاصية؟ مما هو معروف لأي مبرمج متمرس ان هذا التغيير هو اكبر تغيير حدث في لغة PHP منذ انشائها، وهو لم يكن وليد الصدفة ولكن القرار كان صعب بالنسبة لمجتمع PHP لأن المشكلة هنا تتعلق بأمن البرمجة. نعم المشكلة تتعلق بالأمن، لأن ترك الخاصية register_globals في الوضع on هو بمثابة ثغرة امنية خطيرة جداً، تؤدي الى وصول اي متصفح للسكريبت الى بيانات غير مصرح له برؤيتها. وإليك هذا المثال لتوضيح خطر تشغيل الخاصية: PHP كود : <?php اما عند ايقاف الخاصية، فلا يمكن تمريرها لان المتغير الممرر في الرابط ستكون الاشارة اليه بالاسم $_GET['admin'] بدلا من $admin. كيف تتصرف حيال السكريبتات القديمة التي لا تعمل؟ 1- تحديث السكريبت بتركيب اصدار جديد او تحديث الاكواد يدوياً وهو الحل الأمثل والأفضل، حيث يتوافر لديك خيارين:
يمكنك تعديل الملف الذي لا يعمل عن طريق اضافة الكود التالي الى بداية الملف: PHP كود : extract($_POST); 3- تشغيل الخاصية register_globals عن طريق ملف htacces بالرغم من خطورة هذه الطريقة لما يترتب عليها من ثغرات في السكريبت، إلا أنها تبقى طريقة ناجحة وفعالة لتشغيل السكريبت على مسئوليتك الخاصة. تقوم في هذه الطريقة برفع ملف htacces. يحتوي على الكود التالي: كود : php_flag register_globals on للأمانة منقول من منتدى بى اتش بى |