حدثت التحذيرات التالية:
Warning [2] Undefined variable $newpmmsg - Line: 24 - File: global.php(958) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(958) : eval()'d code 24 errorHandler->error_callback
/global.php 958 eval
/printthread.php 16 require_once
Warning [2] Undefined variable $unreadreports - Line: 25 - File: global.php(961) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 25 errorHandler->error_callback
/global.php 961 eval
/printthread.php 16 require_once
Warning [2] Undefined variable $board_messages - Line: 28 - File: global.php(961) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 28 errorHandler->error_callback
/global.php 961 eval
/printthread.php 16 require_once
Warning [2] Undefined property: MyLanguage::$bottomlinks_returncontent - Line: 6 - File: global.php(1070) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(1070) : eval()'d code 6 errorHandler->error_callback
/global.php 1070 eval
/printthread.php 16 require_once
Warning [2] Undefined array key "time" - Line: 2 - File: printthread.php(211) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(211) : eval()'d code 2 errorHandler->error_callback
/printthread.php 211 eval
Warning [2] Undefined array key "time" - Line: 2 - File: printthread.php(211) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(211) : eval()'d code 2 errorHandler->error_callback
/printthread.php 211 eval
Warning [2] Undefined array key "time" - Line: 2 - File: printthread.php(211) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(211) : eval()'d code 2 errorHandler->error_callback
/printthread.php 211 eval
Warning [2] Undefined array key "time" - Line: 2 - File: printthread.php(211) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(211) : eval()'d code 2 errorHandler->error_callback
/printthread.php 211 eval
Warning [2] Undefined array key "time" - Line: 2 - File: printthread.php(211) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(211) : eval()'d code 2 errorHandler->error_callback
/printthread.php 211 eval
Warning [2] Undefined array key "time" - Line: 2 - File: printthread.php(211) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(211) : eval()'d code 2 errorHandler->error_callback
/printthread.php 211 eval
Warning [2] Undefined array key "time" - Line: 2 - File: printthread.php(211) : eval()'d code PHP 8.1.2-1ubuntu2.19 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(211) : eval()'d code 2 errorHandler->error_callback
/printthread.php 211 eval



نادي الفكر العربي
شرح موضوع الرهان .. أدناه - نسخة قابلة للطباعة

+- نادي الفكر العربي (http://www.nadyelfikr.com)
+-- المنتدى: عـــــــــلــــــــــوم (http://www.nadyelfikr.com/forumdisplay.php?fid=6)
+--- المنتدى: حـاسوب و شبكـات (http://www.nadyelfikr.com/forumdisplay.php?fid=85)
+--- الموضوع: شرح موضوع الرهان .. أدناه (/showthread.php?tid=33418)



شرح موضوع الرهان .. أدناه - ابن سوريا - 10-16-2003


في الموضوع أدناه في هذه الساحة,و للدعابة فلقد فتحته لتجريب همتكم و للتحريك قليلاً. فكان من المفاجئ و الجميل أن الكثيرين قبلوا الرهان و التحدي و تمكنوا من الدخول للموضوع.

بالتأكيد فإن الكثير منكم تفاجأ بعملية إغلاق الصفحة بكاملها لمجرد دخولكم للموضوع. و ربما تفاجأ البعض أكثر عندما علم أن الكود الذي وضعته و جعل الصفحة "تسكر بوجهكم" بسيط جداً, عبارة عن سطر بسيط واحد مؤلف من عمليتين في لغة الجافا سكريبت.

لذا علي أن أشرح :

أولاً فلماذا الأمر مفاجئ؟
لأنه من المفروض أن أي كود "أنترنتي" لا يستطيع التحكم بمتصفحك(كما تحدده متطلبات الحماية),فهو نوع من التحكم بمتصفحك دون أن تصلبه أنت.

و لو جربت مثلاً أن تكتب التعليمة (بلغة جافا سكريبت التالية:

<script>
self.close()
</script>

فسترى أن المتصفح سيقول لك: بأن الصفحة تحاول أن تغلق فهل تريد السماح لها بذلك, أو بالأحرى أن هناك "كوداً" يحاول إغلاق متفحك فهل أنت موافق؟

ثانياً: شرح المشكلة, و الثغرة بالأحرى.
الثغرة هي : ثغرة بالمتصفح IE(Internet Explorer) و ليست باللغة (JavaScript) , فبتعليمة بسيطة استطعنا اختراق الحماية الموجودة فيها .
ما هو مبدأ عمل المتصفح؟
المتصفح و عندما يطلب منه كود ما إغلاق نافذة ما, فإنه يبحث عن أصل هذه النافذة التي نريد إغلاقها. فمن المسموح إغلاق النوافذ الثانوية (البوب أب) بما أنها ناتجة أصلاً عن كود بالصفحة الرئيسية, و لكنه نظرياً لا يسمح بإغلاق النافذة الرئيسية, و التي تم فتحها من المستخدم ذاته.
لهذا الغرض يقوم المتصفح بتحقق بسيط و تكمن به الثغرة, فالمتصفح (أو برنامج IE) يبحث عن وجود لصفحة أم للصفحة التي يريد الكود إغلاقها. فإن وجد أن لها صفحة أم فيقوم بإغلاقها , أما إذا لم يكن لها أي صفحة أم (أو جذر) فسيعتبر أنها صفحة رئيسية و يطلب بهذه الحالة موافقة المتصفح. هذا ما يسمى مبدأ الصفحات اليتيمة أيضاً.
ما لم يحسب له المبرمج (للمتصفح IE) أي حساب, هو العملية البسيطة و التعليمة التي تبدو غير ذات أهمية بالكود الذي رآه البعض:

<script>
opener = self
self.close()
</script>

و التعليمة ذات الأهمية هي :

opener = self;

و هذه التعليمة تعني ببعض التبسيط : أنك أيتها الصفحة الحالية لك صفحة أم (جذر) و هي أنت نفسك.
و بهذا خدعنا المتصفح , أخبرناه أن له صفحة أم و هو نفسه الأم. (self تعني النفس أو الذاتي أي الصفحة الحالية و opener تعني الصفحة الأم) , و تقنياً هذا يعني affectation entre objets

و بعدها فإن إغلاق الصفحة أصبح سهلاً, فإننا نطلب من الصفحة الحالية إغلاق نفسها, فيقوم المتصفح بالبحث عن opener أي صفحة أم, فيجد أن هناك صفحة أم فعلاً, فيقوم بإغلاق الصفحة بدون أي سؤال, الثغرة هي أن المبرمج للمتصفح نسي أن يتحقق من أن الصفحة الأم ليست هي نفسها الصفحة الحالية..

طبعاً لدخول الموضوع , فيكفي أن تذهب لإعدادات المتصفح(security) و تجعل من تنفيذ كود الجافا سكريبت إختيارياً, ثم ترفض تنفيذ الكود. فتفتح لك الصفحة.
هناك حلول ٌ أخرى طبعاً..
و لكن المهم هو فهم الثغرة..

لا أهمية فعلية لهذه الثغرة , و كانت لمجرد المداعبة فقط.
هناك ثغرات أخرى تعتمد على ال DHTML و ال ActiveX Object أكثر أهمية و خطورة تمكنكم حتى من الكتابة بجهاز المتصفح, لكن تم تفاديها جزئياً منذ IE5.5 أو الباتشات للحماية ل IE5

تحياتي الخالصة.
ابن سوريا.



شرح موضوع الرهان .. أدناه - ابن سوريا - 02-23-2005

للرفع :D


شرح موضوع الرهان .. أدناه - ابن سوريا - 02-23-2005




شرح موضوع الرهان .. أدناه - ابن العرب - 02-23-2005

أتعلم ما المثل الذي يليق بك يا طارق يا قدّاح يا مغلّب الأعضا(ح) - يحق للشاعر ما لا يحق لغيره؟!؟!؟!

الفاضي يعمل قاضي :P

تحياتي للأساليب الإلتوائية



شرح موضوع الرهان .. أدناه - Logikal - 02-23-2005


اذن كان ظني صحيحا.

عندما ضغطت على الموضوع و قام بإغلاق المتصفح، أول ما خطر لي هو أنك تستغل نقطة ضعف في الـ Explorer, فقمت باستعمال متصفح الـ Netscape و لكن حدثت نفس المشكلة. طبعا الخطوة التالية التي علمت أن عليّ فعلها هو ابطال خاصية الـ JavaScript و المحاولة مرة اخرى، و لكن عند هذا الحد أصابني الملل و الكسل في آن واحد و قررت أن أجد شيئا آخر أتسلى به خاصة بعد أن عرفت من عدد الردود أنني وصلت متأخرا و أن العديد من الزملاء حلوا المسألة و دخلوا الموضوع و لم يعد باستطاعتي تحقيق السبق البرمجي فيه :)


شرح موضوع الرهان .. أدناه - Logikal - 02-23-2005

اقتباس:  ابن العرب   كتب/كتبت  
الفاضي يعمل قاضي :P

يا ابن العرب، نيوتن كان رجلا أصابه الملل و الكسل، و قام بالتفكير في أمور نعتبرها تافهة و غير ذات قيمة عملية (مثلا سقوط تفاحة من شجرة) فأدى به الأمر الى أن يتوصل لنظريات علمية بُنيت عليها علوم الفيزياء المختلفة.

طبعا لو كنا نعيش في زمان نيوتن، و عرفنا أنه يدرس أسباب سقوط الاجسام على الارض، لسخر عليه ابن العرب قائلا، "الفاضي يعمل قاضي". :D


شرح موضوع الرهان .. أدناه - ابن العرب - 02-25-2005

باختلاف طفيف جدا عزيزي لوجيكال،

وهو أنني لا "أسخر"

فالعملية فعلا لفتت انتباهي وهي مثيرة و"تغيظ"

وتعليقي لم يكن سخرية إنما "حركشة"

تحياتي يا عزيزي