PDA

View Full Version : سوال: php_flag register_globals ذلیل برای روشن یا خاموش بودن



soroush.r70
دوشنبه 24 مهر 1391, 09:54 صبح
می تونین توضیح بدین...؟

eshpilen
دوشنبه 24 مهر 1391, 10:02 صبح
100% باید خاموشش کنی.
البته الان دیگه روی بیشتر سرورها باید بصورت پیشفرض خاموش باشه.
register_globals یک ویژگی احمقانه در PHP بود که مشکلات امنیتی زیادی ایجاد میکرد. بعدا پشیمون شدن از کردهء خودشون!!

MMSHFE
دوشنبه 24 مهر 1391, 22:50 عصر
این ویژگی اگه فعال باشه، برای تمامی مقادیر GPC (یعنی Get و Post و Cookie) متغیرهایی همنام با اندیس این آرایه ها ایجاد میکنه. مثلاً بجای اینکه بگیم ['GET['id_$ فقط میگیم id$ یا بجای اینکه بگیم ['POST['username_$ فقط میگیم username$
مشکل اصلی در این روش اینه که بجای هر دو متغیر ['GET['id_$ و ['POST['id_$ یک متغیر یکسان id$ تعریف میشه. درنتیجه اگه توی صفحه خودتون منتظر دریافت یک مقدار با روش POST باشین، با روش GET هم میشه ارسالش کرد و کلاً امنیت میپره یا مثلاً اگه شناسه کاربر رو توی Cookie ذخیره کنید تا بفهمید کاربر لاگین کرده یا نه، یکنفر میتونه به انتهای آدرس صفحاتتون user=admin? اضافه کنه و این مقدار با وجود اینکه به روش Get ارسال شده اما برای این مقدار هم متغیر user$ ساخته میشه که میتونه جایگزین همون متغیر user$ بشه که شما برای ['COOKIE['user_$ توی کدتون درنظر گرفته بودین. بنابراین میبینید که به راحتی امنیت رو میشه به بازی گرفت. بخاطر همین توی نسخه های جدید تأکید کردن غیرفعالش کنید اما کاملاً حذفش نکردن تا سایتهای قدیمی فرصت واسه اصلاح داشته باشن و یک مرتبه از کار نیفتن. توی نسخه 6 هم کلاً حذف خواهد شد.
موفق باشید.