(10-10-1394، 09:16 ق.ظ)ADMIN نوشته: بهرصورت باز هم من سر حرف خودم هستم: چرا توی سایتهای ما چنین باگهای وحشتناکی که میگن وجود نداره؟
از کجا معلوم وجود نداره؟
شاید وجود داره ولی خودتون متوجه نشدید.
وجود حفره با کشف و سوء استفاده ازش برابر نیست.
بعدم من و شما شاید بنا به سطح ودانش و تجربهء خودمون، از یکسری موارد مطلع هستیم جلوگیری میکنیم، مثل منکه در پروژه هام دیگه از == استفاده نمیکنم، ولی به ازای ما دو نفر، 20 نفر دیگه هستن که متوجه این مسائل نیستن. خب شما میگی تقصیر خودشونه باید مطلع باشن، ولی اینطور شما فرق تعداد موارد امنیتی در زبانها رو نادیده گرفتی. مسلما زبانی که موارد خطرناک بیشتری داشته باشه، آمار حفره های امنیتی برنامه نویسانش هم در کل بالاتر میره. بعدم من به شخصه تقصیر برنامه نویس بیچاره نمیدونم که ندونه عملگر == در PHP چقدر غافلگیرانه عمل میکنه، چون چیز منطقی و قابل انتظاری نیست و توی تمام زبانهای دیگر هم چنین چیزی درموردش دیده نمیشه.
نقل قول:چرا هنوز هم بزرگترین سایتهای جهان که امنیت قابل قبولی هم دارن با PHP نوشته میشن؟
بخاطر بازمتن بودن و رایگان بودن PHP و یکسری مزایای دیگر PHP رو انتخاب میکنن، که این مزایا در کل واسشون بر معایبش میچربه. بعدم چون خوب حرفه ای هستن خب میتونن امنیتش رو هم تامین کنن.
شما اینجا یه مسئله ای رو نادیده میگیرید. اونم میزان نیاز به حرفه ای بودن و دانش و تلاشی که برای تامین امنیت در هر زبانی نیازه. مسلما زبان تا زبان میتونه از این نظر تفاوت داشته باشه. اگر PHP اون طراحی های غلط رو نداشت، میزان نیاز به این حرفه ای بودن و دانش و تلاش کمتر میشد، که این باعث میشد آمار کلی ضعف در امنیت هم مقداری پایین تر بیاد.
حالا بله من و شما و شرکتهای بزرگ، افراد خبره، میتونن به پشتوانهء دانش و خبرگی زیادی که دارن و احتمالا کمی تلاش و هزینهء بیشتر، امنیت رو تامین کنن و به سطح قابل قبول برسونن، ولی خیلی های دیگه که اینطور نیستن نمیتونن و در نتیجه آمار حفره های امنیتی در تناسب با ویژگیهای خود زبان میتونه کم و زیاد بشه. البته این تنها عامل تاثیرگذار نیست، ولی سهم خودش رو در آمار داره.
نقل قول:این نشون میده که با وجود نواقصی که توی طراحی وجود داره، باز هم برنامه نویس میتونه برنامه امن بسازه. اصلاً هم کار دردسرآفرینی نیست چون هرروزه داریم این کار رو انجام میدیم و اذیت هم نشدیم!
دردسر آفرین که هست. ولی بعد از مدتی که تجربه پیدا کردی و مسلط شدی اونوقت هست که تاحد زیادی ایمن میشی.
من خودم یادمه اولین برنامه ای که با PHP نوشتم دوستی داشتم که اومد یه مثال داد که *** بهش با یک URL خاص بسادگی برنامم رو منهدم کرد! من خیلی شوکه و ناراحت شدم، و وقتی کمی بررسی کردم فهمیدم که اینکه تونسته این کار رو بکنه بخاطر ویژگی register globals در PHP بوده. واقعا آیا register globals تقصیر من برنامه نویس بود؟ منکه فکر نمیکنم! حتی الان باوجود تخصص امنیتی که دارم میگم در درجهء اول تقصیر برنامه نویس نیست، بلکه در درجهء اول تقصیر طراحان زبان است. چون register globals یک طراحی ناشیانه بود و منطق آدم هیچوقت احتمال چنین چیزی رو نمیده.
حالا فرض کنید اون دوستم منو آگاه نمیکرد و من اون برنامه رو همونطوری مدتها در کارهای واقعی استفاده میکردم! خب نمونه همین میشه که آمار حفره های امنیتی رو بالا میبره.
آخرین مورد هم که همین رفتارهای غیرمنتظره عملگر == بود که باعث ایجاد حفرهء امنیتی در پروژم هم شده بود. مجبور شدم بخاطرش در تمام اون همه کد، == رو با === عوض کنم، و 100% مطمئن نیستم بخاطر این تغییر مشکلی در جایی از کدهام ایجاد نشده باشه (دیگه حال و حوصله و وقتش رو نداشتم تمام برنامه رو دوباره تست های جامعی بکنم).
بعدم گفتم که بهرحال خیلی حفره ها رو به آسونی و هرکسی نمیتونه کشف کنه. بعضیا رو عمدتا با مطالعهء کد میشه کشف کرد. بعضی وقتا تصادفی کشف میشن. اینکه شما خودت کشف نکردی کس دیگری هم ظاهرا کشف نکرده، حالا برای هرچند سال، دلیل نمیشه که لزوما وجود نداشته باشه! من بعنوان یه متخصص امنیت مثلا کی وقت دارم حال دارم واسه چی باید بیام کد و برنامهء شما رو بررسی کنم ضعفهای امنیتش رو دربیارم؟ هنوز وقت و حوصله ندارم پروژهء خودم رو هم کامل بررسی کنم! باید یه چیزی باشه ارزشش رو داشته باشه دلیل کافی براش باشه خب.