PDA

View Full Version : آیا امنیت برنامه های PHP کاران بیشتر است؟



eshpilen
یک شنبه 25 فروردین 1392, 09:02 صبح
PHP developers are usually better informed than ASPX or JSP developers on how the web and HTTP works, and that makes for better coding practices, but they both lack basic security knowledge. Other languages have built-in security mechanisms, which is why PHP websites often have more flawed

ترجمه: «توسعه دهندگان PHP معمولا درمورد اینکه وب و HTTP چطور کار میکند از توسعه دهندگان ASPX یا JSP آگاهتر هستند، و آن باعث روشهای کدنویسی بهتر میشود، اما هر دوی این گروهها فاقد دانش پایهء امنیت هستند. بقیهء زبانها حاوی مکانیزمهای امنیتی سرخود/درونی (built-in) هستند، که دلیل آن است که چرا سایتهای PHP اغلب موارد بیشتری از حفره دار بودن دارند.»

منبع: https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet

Unique
یک شنبه 25 فروردین 1392, 13:30 عصر
البت بر عکس این مطلب هم صادقه !

سایتهایی php که از نظر امنیتی بسیار بالا هستند نسبتشون به سایت هایی که با زبان های مذکور ساخته شده اند و ادعای امنیت بیشتری دارند بالاتره‌!

یک موضوع دیگه هم هست ، مثلا توی asp .net به محص اینکه با مشکل گیر دادن net. به کاراکتر های حساس به xss مواجه میشوند فقط دنبال خاموش کردن این feature میگردن و Input validation را غیر فعال میکنند ! اما چون نمیدونند برای چی هست سایتشون را در مقابل حملات xss باز میکنند !

در مورد sql injection هم من این حرفون قبول ندارم ! چون هنوز خیلی ها از parameterized query ها استفاد نمیکنند و کد ها را inline مینویسند مخصوصا توی net. و درست هم escape نمیکنند ، چون در آخر در خیلی از سناریو ها مخصوصا جاهایی که Join زیاده هنوز query میدهند و حالت active record استفاده نمیکنند !

یکی از دلایل دیگه ای که باعث میشه حفره ها و نفوذ های بیشتری توی سایت های php انجام بشه اینه که تعداد کاربرانش و سایت هاش به شدت از تکنولوژی های دیگه بیشتره ! مثل ما سایتی با cold fusion داریم که میدونیم ظرف چند دقیقه از پا درمیاد اما چون کسی کلا cold fusion کار نکرده و اصلا نمیدونه چیه اتفاقی براش توی این ۸ سال نیفتاده !

یک موضوع دیگه هم هست ، الان دیگه جا افتاده که تازه کار های میرن سراغ یک framework و خیلی از این framework ها مفاهیم امنیتی را در خودشون گنجاندن و از pure php که میتونه باعث ایجاد حفره های امنیتی بشه کمتر خبری هست مگر کسانی که با این framework ها آشنایی ندارند و یا کسانی که اونقدر وارد هستند که از pure php استفاده کنند !

eshpilen
یک شنبه 25 فروردین 1392, 14:12 عصر
حالا جالبه توی همون صفحه یک کدی دارای حفرهء امنیتی ناشیانه ای رو پیدا کردم!
در security.stackexchange.com مطرحش کردم: http://security.stackexchange.com/questions/34326/vulnerable-code-suggested-on-owasp
البته مقالهء ویکی OWASP رو الان ویرایش کردن و توضیحات کافی دادن بابت این اشکال.

eshpilen
یک شنبه 25 فروردین 1392, 20:54 عصر
بنظرم اومد توی لیست مشارکت کنندگان در سایت OWASP اسم یک نفر ایرانی رو دیده بودم.
این اشتباه تابلو توی مقالهء PHP حس بویایی منو به کار انداخت که کار کار همون ایرانیه است :متفکر:
بخصوص که کد مشابه این رو بعضی افراد چندبار در فروم برنامه نویس و جای دیگه درج کرده بودن.

خلاصه هیستوری مقاله رو گشتم و دیدم که بله کار کار خودشه!!
دسته گل از جانب بروبچ خودمون بوده :لبخند:
اینم سندش: https://www.owasp.org/index.php?title=PHP_Security_Cheat_Sheet&diff=prev&oldid=133269
کد آسیب پذیر اینه:

$IP = (getenv ( "HTTP_X_FORWARDED_FOR" )) ? getenv ( "HTTP_X_FORWARDED_FOR" ) : getenv ( "REMOTE_ADDR" );

حال کردید؟ :چشمک:

colors
یک شنبه 25 فروردین 1392, 21:14 عصر
بنظرم اومد توی لیست مشارکت کنندگان در سایت OWASP اسم یک نفر ایرانی رو دیده بودم.
این اشتباه تابلو توی مقالهء PHP حس بویایی منو به کار انداخت که کار کار همون ایرانیه است :متفکر:
بخصوص که کد مشابه این رو بعضی افراد چندبار در فروم برنامه نویس و جای دیگه درج کرده بودن.

خلاصه هیستوری مقاله رو گشتم و دیدم که بله کار کار خودشه!!
دسته گل از جانب بروبچ خودمون بوده :لبخند:
اینم سندش: https://www.owasp.org/index.php?title=PHP_Security_Cheat_Sheet&diff=prev&oldid=133269
کد آسیب پذیر اینه:

$IP = (getenv ( "HTTP_X_FORWARDED_FOR" )) ? getenv ( "HTTP_X_FORWARDED_FOR" ) : getenv ( "REMOTE_ADDR" );

حال کردید؟ :چشمک:

دمت گرم, جالب بود

eshpilen
یک شنبه 25 فروردین 1392, 21:20 عصر
طرف ببین عجب خفن هم هست: http://abiusx.com/cv
من تاحالا رزومه اینطوری ندیده بودم.

مقام اول هکرهای ایران!

تعجبم چنین چیزی رو نمیدونسته یا شایدم حواسش نبوده :متفکر:
خب البته آدم که زیاد فعالیت از اینور به اونور کنه با عجله، ضریب اشتباهش هم بالا میره.

colors
یک شنبه 25 فروردین 1392, 21:26 عصر
آره اتفاقا منم الان داشتم رزومشو میخوندم.

ظاهرا یکی از توسعه دهنده های پروژه QT هستش

Unique
دوشنبه 26 فروردین 1392, 01:50 صبح
خدایی ! من رزومه را میدیدم بدون اینکه کسی بهم بگه میفهمیدم طرف ایرانیه ! من نمیدونم چرا ما وقتی مثلا ۵٪ از چیزی میدونیم فکر میکنیم باید توی cv بنویسیم ! مثلا من توی دانشگاه c خوندم و برنامه هم کم ننوشتم باهاش اما هیچوقت نمیام بگم c بلدم ! یه زمانی هم کمی با ada کار میکردم و برنامه های با حالی نوشتم اما اصلا نمیگم ada بلدم ! حالا هر ایرونی ببینی ماشا ا... برات cv مینویسه تووووووپ !

علی متقی پور
دوشنبه 26 فروردین 1392, 03:17 صبح
خدایی ! من رزومه را میدیدم بدون اینکه کسی بهم بگه میفهمیدم طرف ایرانیه ! من نمیدونم چرا ما وقتی مثلا ۵٪ از چیزی میدونیم فکر میکنیم باید توی cv بنویسیم ! مثلا من توی دانشگاه c خوندم و برنامه هم کم ننوشتم باهاش اما هیچوقت نمیام بگم c بلدم ! یه زمانی هم کمی با ada کار میکردم و برنامه های با حالی نوشتم اما اصلا نمیگم ada بلدم ! حالا هر ایرونی ببینی ماشا ا... برات cv مینویسه تووووووپ !

بله. ما ایرانی ها اخلاقیات بد بسیار داریم. از جمله اینکه حسودیم و چشم دیدن افراد بهتر از خودمون رو نداریم و اثبات خودمون رو در نفی دیگران میبینیم.

در مورد موضوع تاپیک هم بنظر من امن تر بودن پروزه های دات نت نسبت به پروژه هایی که با اسکریپت های php نوشته میشه بدیهیه. البته طبیعتا اگر یکی مثه من بیاد با دات نت یک اسپاگتی سر هم کنه و اسمش رو بذاره اپلیکیشن ایراد از دات نت نیست ولی کافیه یه نفر در حد متوسط بلد باشه تا دیگه امنیت اپلیکیشنش در حد 99 درصد باشه.
البته امیدوارم اینکه من یک دات نت کارم باعث تعصبانه قضاوت کردنم نشده باشه

eshpilen
دوشنبه 26 فروردین 1392, 08:03 صبح
خدایی ! من رزومه را میدیدم بدون اینکه کسی بهم بگه میفهمیدم طرف ایرانیه ! من نمیدونم چرا ما وقتی مثلا ۵٪ از چیزی میدونیم فکر میکنیم باید توی cv بنویسیم ! مثلا من توی دانشگاه c خوندم و برنامه هم کم ننوشتم باهاش اما هیچوقت نمیام بگم c بلدم ! یه زمانی هم کمی با ada کار میکردم و برنامه های با حالی نوشتم اما اصلا نمیگم ada بلدم ! حالا هر ایرونی ببینی ماشا ا... برات cv مینویسه تووووووپ !
آره اتفاقا منم میخواستم به این نکته اشاره کنم و حتی تاپیک بزنم. ولی دیدم مجبورم مثال بزنم و اونوقت بعضی افراد بهشون برمیخوره و ناراحت میشن دیگه بیخیال شدم.

من یه مشکلی دیدم توی خیلی رزومه ها مثل همین که شما میگی. یعنی مثلا طرف همچین رزومه ای نوشته که فکر میکنه بابا این کیه دیگه، ولی بعد میبینی توی یه چیزهای پیش پاافتاده گیر میکنه یا نمیدونه اصلا!
این واسه بنده جالب و مایهء سوال بوده که قضیه چیه. بخصوص که بعضی نمونه کارهای اون افراد (مثلا سایتهایی که درست کردن) رو هم نگاه میکنی بنظر برجسته میان؛ یعنی البته منکه کدشون رو ندیدم و در این زمینه تجربهء زیادی ندارم و صرفا از روی ظاهرشون میگم؛ شایدم واقعا اونقدر کارهای سختی نیستن و نیاز به سواد زیادی ندارن.

البته بهرحال برنامه نویسی خیلی گسترده است و سطوح و حیطه های متعددی داره.

حالا بهرحال رزومه هست دیگه :لبخند:
شاید حتی منحصر به ایرانی ها هم نباشه.
البته فکر میکنم ما بیشتر به کشورهای جهان سوم و درحال توسعه ای مثل خودمون شبیه باشیم از این نظر.
مثلا ممکنه داستان رزومهء هندی ها هم کمی شبیه مال ما باشه!

MMSHFE
دوشنبه 26 فروردین 1392, 08:17 صبح
البته هند حداقل توی بحث IT و تولیدات نرم افزاری جهان سوم محسوب نمیشه ها، بد نیست بدونید سال 2012 صادرات نرم افزار هندوستان (نرم افزارهایی که خودشون ساختن و خارج از کشورشون فروختن و ارز بدست آوردن) سه برابر فروش سالانه نفت ایران بوده. بخاطر یه دوره آموزشی هندوستان بودم، اونجا یه PC خریدم و دیدم 25 سال گارانتی واقعی (بدون سؤال) داره. این نشون میده چقدر به محصولشون و حتی کیفیت Assembleکردن قطعات اطمینان دارن.

eshpilen
دوشنبه 26 فروردین 1392, 08:18 صبح
من نمیدونم چرا ما وقتی مثلا ۵٪ از چیزی میدونیم فکر میکنیم باید توی cv بنویسیم !
من میگم طرف میاد کامپایلر و مفسرش رو که راه اندازی میکنه و یه Hello world مینویسه میگه در سطح مقدماتی و Basic بلدم :لبخند:
اگر بره یک IDE و محیط ویژوالی چیزی مخصوص اون محیط رو هم نصب کنه و یک کمی باهاش ور بره و یه برنامهء تست باهاش بسازه ارتقا پیدا میکنه به سطح متوسط :قهقهه:


مثلا من توی دانشگاه c خوندم و برنامه هم کم ننوشتم باهاش اما هیچوقت نمیام بگم c بلدم ! یه زمانی هم کمی با ada کار میکردم و برنامه های با حالی نوشتم اما اصلا نمیگم ada بلدم !
میتونی بنویسی آشنایی داری.
فکر کنم عاقلانه هم این باشه که بنویسی.
بالاخره رزومه هست و رقابته و برای کارفرماها هم هر موردی میتونه اهمیت داشته باشه.
بعدشم ما بالاخره جهان سوم یا درحال توسعه هستیم و داریم برای مقدمات بقا هم دست و پا میزنیم.
هرچند بازم میگم این مسئله لزوما مختص ما نیست و ممکنه حتی در کشورهای پیشرفته هم دیده بشه؛ منتها با آمار کمتر احتمالا.
منتها طرف اکثرا بالاخره یه چیزی درست و حسابی بلده ها؛ نه مثل اون مثال بالا که زدم!

eshpilen
دوشنبه 26 فروردین 1392, 08:25 صبح
اونجا یه PC خریدم و دیدم 25 سال گارانتی واقعی (بدون سؤال) داره.
بابا چی میگی :متعجب:
آخه کارخونه و تشکیلاتشون توی آمریکا و ژاپن هم اونقدر عمر طبیعی واسه خیلی از قطعات قائل نیست چه برسه به اینکه بیان 25 سال گارانتی کنن!
مگه میشه؟
حالا هرچی. منکه میگم خالی بندیه بابا :قهقهه:
یه حساب دیگه ای کردن حتما.
مثلا گفتن حالا کی میره میتونه بعد از این همه سال دنبال گارانتی سیستم!!
اصلا طرف سیستم رو بعد از 5 سال میندازه دور!
خلاصه یه بلایی سرش میاد دیگه.
محاسبات آماری خاصی کردن حتما.
تبلیغاته!

MMSHFE
دوشنبه 26 فروردین 1392, 08:35 صبح
منهم اول همین فکر رو میکردم ولی یکی از دوستام که اونجا دانشجوی پونا بوده و موندگار شده بود و با ما توی مومبای بود، میگفت 10 سال قبل یک PC خریده و هنوز هم وقتی مشکل پیدا میکنه، رایگان براش درست میکنن. البته مشکلات سخت افزاری که ازطرف کاربر نباشه. مثلاً اگه CPU رو OverClock کنیم و بسوزه دیگه گارانتی نداره. ولی در شرایط عادی، میگفت حتی یک روپیه هم هزینه نکرده. یا مثلاً میگفت وقتی میخواسته هاردش رو ارتقا بده، هارد قبلی رو خود شرکت با قیمت مناسبتر نسبت به بازار برداشته و بعد از پرداخت مابه‌التفاوت، هارد جدید رو نصب کردن. بهرحال راست و دروغش پای خودشون ولی توی بحث نرم افزار واقعاً کیفیت کارشون رو من از نزدیک دیدم. فکر کنید سال 83 که تو ایران هیچ خبری از GameDevelopmet نبود، اونجا ما دوره تخصصی Game Engine Development دیدیم (دقت کنید، Game Engine Development نه Game Development).

colors
دوشنبه 26 فروردین 1392, 09:48 صبح
البته در مورد هند نمیشه از این موضوع گذشت که, هند چهارمین قدرت برتر نظامی دنیا از نظر نرم و سخت افزاری هست. جالبه که تو هند تعطیلات رسمی به یک هفته نمیرسه در حالی که تو ایران امسال حدود یک ماه تعطیلات رسمی و با جمع جمعه ها میشه حدود 3 ماه و خورده ای!

MMSHFE
دوشنبه 26 فروردین 1392, 10:30 صبح
ایران که قربونش برم کلاً همونطور که لابلای پیام بازرگانی فیلم پخش میکنه، لابلای تعطیلیها هم سر کار میریم!

Veteran
دوشنبه 26 فروردین 1392, 14:23 عصر
از pure php که میتونه باعث ایجاد حفره های امنیتی بشه کمتر خبری هست مگر کسانی که با این framework ها آشنایی ندارند و یا کسانی که اونقدر وارد هستند که از pure php استفاده کنند !

میشه توضیحی در مورد pure php بدید ؟ :لبخند:
چی هست؟
چیکار میکنه؟
ممنون

Unique
دوشنبه 26 فروردین 1392, 16:32 عصر
یه امروز صبح را نبودیم !


بله. ما ایرانی ها اخلاقیات بد بسیار داریم. از جمله اینکه حسودیم و چشم دیدن افراد بهتر از خودمون رو نداریم و اثبات خودمون رو در نفی دیگران میبینیم.
نمیدونم چرا اینطوری برداشت کردین ، شما اگه مدیر شرکتی باشی یا حداقل یکبار قصد استخدام داشته باشی و درخواست cv کنی ! یک cv هایی برات میاد تصمیم می گیری جای خودت را عوض کنی بدی به صاحب اون cv ! من با شما اتفاقا خیلی خیلی موافقم چون این خصیصه در افرادی که در cv هاشون زیاده روی میکنند کاملا بارز هست. اما بنده به هیچ وجه قصد نفی یا توی سر زدن نداشتم و هیچوقت آدم حسودی نبودم و سعی کردم رقابت کنم تا حسادت.


کافیه یه نفر در حد متوسط بلد باشه تا دیگه امنیت اپلیکیشنش در حد 99 درصد باشه.
متوسط یعنی چی ؟ مثلا از control های سرور استفاده کنه ؟ به web.config مسلط باشه ؟ mvc کار کنه ؟ مفاهیم sql injection را بدونه ؟‌ form validation بدونه ؟ xss بدونه ؟ ،‌این متوسط را توی net. چی نعریف میکنین ؟ چیا بلد باشه و از چی دوری کنه ؟

اخه میدونی اگه یک php کار هم به صورت متوسط بلد باشه همچین حفره عظیمی در کدهاش دیده نمیشه ! من دونستن حملا sql injection و xss و CSRF و دسترسی های فایل ها و دایرکتوری ها را از حداقل دونستن php و بکار بردنش میدونم ! یعنی بازم تا متوسط جا داره !

دوست عزیز اگه از هر دوش استفاده نکرده بودم و تجربه من از net. بسیار بیشتر از php نبود این حرفا را نمیزدم ! ولی کل مطالب امنیتی که الان بلد هستم را مدیون php و لینوکس هستم تا windows و خیلی ناراحتم چرا از ۱۰ ،‌۱۲ سال پیش وقتم را با windows و net. هدر میدادم !


میشه توضیحی در مورد pure php بدید ؟
pure یعین خالص یعنی خود syntax اصلی php بدون اینکه از framework استفاده بشه. !:چشمک: