دنیای تکنولوژی بدون نقص های امنیتی معنا ندارد؛ از حفره های سخت افزاری مانند ملتداون و اسپکتر در پردازنده های اینتل گرفته تا ایرادات نرم افزاری در زبان های برنامه نویسی. به تازگی شرکت امنیتی «وایت سورس» آسیب پذیری های موجود در 7 زبان برنامه نویسی پرکاربرد طی ده سال اخیر را بررسی کرده و نتایج جالبی را به دست آورده است. طبق گزارش وایت سورس، زبان های برنامه نویسی C، جاوا، جاوا اسکریپت، پایتون، روبی، پی اچ پی و ++C در فهرست بیشترین آسیب پذیری قرار می گیرند. زبان C حدود نیمی از گزارش های امنیتی را به خود اختصاص داده و در صدر جدول قرار گرفته است.
البته به گفته وایت سورس، حتی با وجود این همه آسیب پذیری هم نمی توان گفت که زبان C امنیت کمتری نسبت به دیگر زبان ها دارد. تعداد زیاد نقص های امنیتی زبان C به چند عامل وابسته است، از جمله اینکه قدمت بسیار بیشتری نسبت به بقیه دارد و کدهای فوق العاده زیادی با آن نوشته شده است. زیرساخت های نرم افزاری متعددی مانند OpenSSL و کرنل لینوکس هم از زبان C بهره می برند.
با این حال اگر برنامه نویسی را با C آغاز کرده باشید، احتمالاً می دانید که بعضی از مشکلات هم ذاتی هستند. یکی از مسائل اساسی زبان C رفتار نامشخص و تعریف نشده در شرایط مختلف است که می تواند آسیب پذیری های متعددی را ایجاد کند. از طرفی زبان ++C طی 5 سال گذشته با بحرانی ترین آسیب پذیری ها روبرو بوده است. خطاهای بافر که مدتها برنامه نویسان C را آزار می دادند، حالا در ++C خودنمایی می کنند.
جاوا اسکریپت که احتمالاً محبوب ترین زبان برنامه نویسی عصر حاضر به شمار می رود، تنها موردیست که طی 10 سال اخیر با افزایش مداوم تعداد آسیب پذیری ها روبرو بوده است. البته بیشتر معضلات امنیتی جاوا اسکریپت از نوع Path Traversal بوده یا مربوط به پکیج های ثالث هستند و فقط توسط ابزارهای آنالیز کد منبع شناسایی می شوند.
همان طور که انتظار می رود، شاهد عملکرد بسیار خوب زبان برنامه نویسی قدیمی پایتون از نظر امنیت هستیم. تقریباً تمامی زبان ها از حفره های امنیتی مشترک رنج می برند. دو نقص امنیتی که در 70 درصد زبان ها دیده می شوند، عبارتند از CWE-79 یا «تزریق اسکریپت از طریق وبگاه» و CWE-20 که به اعتبارسنجی داده ها مربوط است.
اما آیا در نهایت، زبان C کمترین و زبان پایتون بیشترین امنیت را در بین زبان های برنامه نویسی دارند؟ پاسخ به این سؤال به هیچ وجه ساده نیست. وایت سورس می گوید این نتیجه گیری ساده فقط به درد بحث و جدل بین برنامه نویسان می خورد، اما در نهایت این شما هستید که باید خلاقانه ترین و ایمن ترین نرم افزار ممکن را با هر زبانی که دوست دارید، بنویسید.
در تحقیق WhiteHat Security محبوبترین زبانهای برنامهنویسی ASP، ColdFusion، .NET، Java، Perl و PHP هستند (زبان برنامهنویسی کلاسیک ASP و تکنولوژیهای جدیدتر .Net از هم متمایز شدهاند). سه زبان برتر و محبوب برنامهنویسی وب به شرح زیر است:
.Net (%28.1)
Java (%24.9)
ASP (%15.9)
رتبهبندی میزان آسیبپذیری مربوط به هر زبان هم دقیقا با رتبهبندی بالا هماهنگی دارد. زبان برنامهنویسی وب NET. به میزان 31 درصد آسیبپذیر است درحالیکه زبانهای Java و ASP به ترتیب 28 درصد و 15 درصد آسیبپذیرند.
هر صنعتی زبان برنامهنویسی وب خاصی را انتخاب میکند – برای مثال بخش مالی بیشتر از زبان ASP استفاده میکند در حالیکه در صنعت بازی زبان PHP حرف اول را میزند. در بانکداری زبانهای Java و.NET بیشتر استفاده میشوند و به نظر میرسد که نهادهای دولتی به هنگام ساخت اپلیکیشنهای وب از زبانهای ColdFusion و Perl دوری میکنند.
یافتههای این گزارش نشان میدهد که مقام نخست در میان آسیبپذیرترین زبانهای برنامهنویسی وب به .NET تعلق میگیرد و زبانهای Java و ASP در مقامهای بعدی قرار دارند:
.Net (%31)
Java (%28)
ASP (%15)
PHP (%2)
WhiteHat Security در تفسیر این ارقام بسیار محتاطانه عمل کرده است، و این مسئله را در نظر داشته که فاکتورهای بسیاری میتوانند بر این اعداد تاثیر داشته باشند: تعداد بسیار بالای اپلیکیشنهای نوشتهشده با زبان برنامهنویسی وب .NET و Java، پیچیدگی/سایز وبسایتها و اپلیکیشنهای نوشتهشده با این زبانها در مقایسه با زبانهای دیگر و از همه مهمتر، هیچ شواهدی مبنی بر اینکه .NET یا Java امنیت کمتری در مقایسه با زبانهای دیگر دارند وجود ندارد.
بنابراین با این حال بهتر است که تمام برنامه نویسان، زمان کافی را به مطالعه آسیب پذیری های زبان مورد استفاده خود اختصاص دهند و نقاط قوت و ضعف آن را به خوبی بدانند، تا بتوانند در زمان طراحی و توسعه نرم افزار تصمیمات درستی را از نظر امنیتی اتخاذ کنند. در واقع نقش برنامه نویس از زبان برنامه نویسی مهم تر است. همچنین برای مشاهده ی مطالب مرتیط دیگر، به بخش آموزش عمومی ساعدنیوز مراجعه نمایید.