رایج‌ترین خطاهای برنامه‌نویسی را می‌شناسید؟؟

عموما برنامه‌نویسان در هنگام نوشتن کد با مشکلات متدوال و مشابهی روبرو می‌شوند؛ که این مشکلات ممکن است مختص یک دسته زبان برنامه نویسی خاص مانند c و c++ باشند. همچنین ممکن است دسته‌ی دیگری از خطاها مربوط به زبان‌های Java، JavaScript و Python.در این پست قصد داریم شما را با ۱۰ اشتباه و خطای رایج در برنامه نویسی آشنا کنیم؛ لذا لیست ذیل را کاملا بررسی نمایید و سعی کنید از این اشتباهات و خطاها دور بمانید، با ما همراه باشید…۱۰ خطای رایج برنامه نویسی!۱- Buffer Overflow یا سرریز بافرسرریز بافر، زمانی رخ می‌دهد که داده‌ها در یک بافر نوشته شوند و تمام فضای بافر را اشغال کنند و هنوز هم داده‌هایی باقی بمانند که در بافر ذخیره نشده‌اند؛ یا به عبارت ساده‌تر حجم داده‌ها از مقدار فضای خالی بافر تجاوز کند. این اتفاق ممکن است ناشی از محاسبات غلط، پیرامون موقعیت نوشتن داده‌ها باشد. یا حتی نوشتن مداوم و پیوسته در بافر بدون چک کردن طول آن. این خطا به هر دلیلی ممکن است رخ دهد. این خطا یکی از معمولی‌ترین و متداول‌ترین خطاهای برنامه نویسی است. برخی از مخرب‌های سیستم مانند کرم اینترنت موریس در سال ۱۹۸۸ (در پست “۱۰ هکر معروف جهان!” با این کرم آشنا شدید)، کرم Nimda در سال ۲۰۰۱ و خطای Sendmail در سال ۲۰۰۳ با تکیه بر این خطای برنامه‌ نویسی تولید شده‌اند.مثال: زبان c۲- SQL Injectionخطای SQL Injection یک تکنیک مخصوص برای تزریق دستورهای SQL به ورودی کاربر است؛ به طوری که این دستورها به طور مستقیم توسط پایگاه‌داده اجرا شوند. این کار به هکرها و متجاوزان اجازه می‌دهد تا اقدامات مخربی مانند حذف جدول‌ها، drop کردن پایگاه‌داده، سرقت داده‌ها و بسیاری موارد دیگر را به راحتی انجام دهند.علت و دلیل اصلی موفقیت این نوع حملات جاسوسی این است که برنامه‌ها پیش از دسترسی کاربر به پایگاه داده، اعتبارسنجی و بازرسی درست و مناسبی انجام نمی‌دهند؛ لذا هرکسی به راحتی می‌تواند به پایگاه داده متصل شود و در عملکرد آن اخلال ایجاد کند.مثال: زبان جاوا// The following is a parameter value with SQL injectionString username = &quotjoe'; delete from user where username like '%"Connection con = ...; // create connection to database// When this statement is executed, all users are deleted from the database.con.createStatement().execute(&quotupdate user set logged_in = 1 where username = '&quot + username + &quot'&quot);۳- OS Command Injectionخطای OS Command Injection، یا به عبارتی همان تزریق فرمان سیستم‌عامل، زمانی بروز پیدا می‌کند، که ورودی مشخص‌شده توسط کاربر برای اجرا مستقیما به سیستم‌عامل تحویل داده ‌شود، بدون انجام هیچ‌گونه بازرسی قبلی! چنین عملیاتی ممکن است توسط یک برنامه، برای استفاده از دستورات موجود در سیستم‌عامل استفاده شود. هنگامی که برنامه کاربر را بدون اعتبارسنجی تایید می‌کند، عملا مسیر را برای یک هکر آسان می‌کند تا با استفاده از ساختاری هوشمند فرمان‌ها و دستورات مخرب خود را به راحتی بر روی سیستم اجرا نماید. برای مثال، این دستورات می توانند جهت حذف فایل‌ها، سرقت داده‌ها، تغییر سطح دسترسی به پرونده‌ها و بسیاری موارد دیگر استفاده شوند.۴- Integer Overflowخطای Integer Overflow زمانی رخ می‌دهد که شما تلاش می‌کنید یک مقدار بزرگ‌تر از حد را در یک متغیر صحیح ذخیره کنید. هنگامی که این اتفاق رخ می‌دهد، مقدار بزرگ‌تر ناقص و تکه تکه می‌شود و این عملیات منجر به ایجاد و تولد یک نتیجه‌ی غیرقابل‌ پیش‌بینی می‌شود. برای مثال، یک متغیر ۲ بایتی بدون علامت از نوع short می‌تواند حداکثر مقدار ۶۵۵۳۵ را در خود ذخیره کند. اکنون فرض کنید که دو مقدار از نوع short مانند ۶۵۵۳۰ و ۱۰ را با هم جمع کنیم و نتیجه را در یک متغیر دیگر از نوع short ذخیره کنیم؛ نتیجه ۶۵۵۴۵ خواهد بود و برای یک متغیر از نوع short نامناسب و بزرگتر از ظرفیت متغیر است.درنتیجه یک مقدار غیرقابل ‌پیش‌بینی در متغیری که نتیجه در آن قرار می‌گیرد، ایجاد می‌شود. وقتی که از این متغیر در عملیات و دستورات دیگری استفاده شود، یک سری نتایج غیرقابل پیش‌بینی در طی اجرای کد تولید می‌شود که این نتایج اشتباه، نتیجه‌ی کل پروژه را ممکن است تغییر دهد.مثال: زبان cshort a = 65530, b = 10;short c = a + b;// on my computer, c has the unexpected value: 4۵- اعتبارسنجی نادرست Index یا شاخص یک آرایهیکی از رایج‌ترین خطاهایی است که در برنامه‌ها رخ می‌دهد. این امر زمانی بروز می‌کند که به یک آرایه با استفاده از شاخص یا ایندکسی که خارج از محدوده‌ی آن آرایه ‌است، دسترسی پیدا کنید. زمانی که شما بخواهید به یک مکان خارج از مرزهای معتبر برنامه دسترسی ایجاد کنید، با یک خطای دسترسی به حافظه مواجه خواهید شد. هنگامی که مکان حافظه در محدوده‌ی برنامه قرار دارد ولی خارج از دسترس آرایه، شما باعث می‌شوید که یک مقدار اشتباه و غیرقابل پیش‌بینی فاسد را مشاهده کنید.این نوع خطاها در زبان‌های برنامه نویسی C و C + + رایج‌تر هستند، اما می‌توانند با هر زبانی در هر برنامه‌ای به وجود بیایند، حتی آن‌هایی که به صورت خودکار مدیریت حافظه را انجام می‌دهند مثل جاوا، جاوا اسکریپت، پایتون و … . تنها راه ممکن برای از بین بردن این نوع از خطا این است که شما یعنی برنامه نویس با دقت بیشتری کد خود را بنویسید و بررسی نمایید.تا به اینجای این مقاله به ساده‌ترین اما پر دردسرترین خطاهای برنامه‌نویسان اشاره کردیم. امیدواریم این مقاله تلنگر خوبی بوده باشد تا از این خطاها پرهیز کنید. برای خواندن ادامه این مقاله میتوانید به بررسی 10 خطا و اشتباه متداول در کدنویسی که برای برنامه نویسان رخ می‌دهد! مراجعه کنید.