چرا امنیت نرم افزار مهارتی است که همه برنامه نویسان باید داشته باشند


به عنوان یک برنامه نویس یا توسعه دهنده ، نمی توان اهمیت ساخت برنامه های ایمن را بیش از حد تأکید کرد.

امنیت نرم افزار با شناسایی آسیب پذیری های احتمالی در نرم افزار و اقدامات احتیاطی برای محافظت از آنها ، با مدیریت حملات مخرب سروکار دارد.

این برنامه هرگز نمی تواند 100٪ امن باشد زیرا توسعه دهنده می تواند در تلاش برای رفع موارد موجود یا ایجاد حفره های امنیتی جدید از طریق به روزرسانی ، اشتباهی را ساده کند یا خطاهای جدید ایجاد کند.

با این وجود ، دو روش اصلی وجود دارد که همه سازندگان نرم افزار می توانند برای اطمینان از ایجاد برنامه های ایمن از آنها استفاده کنند – ابتدا کد امن بنویسید و کد خود را به طور موثر تست کنید.

نحوه نوشتن کد امنیتی

نوشتن کد امن محدود به یک چیز است – مدیریت خطا. اگر می توانید هر مقدار ممکن را که کاربر می تواند در برنامه شما وارد کند پیش بینی کنید و پاسخی به این مقدار در برنامه خود ایجاد کنید ، در حال نوشتن یک کد امن هستید.

این بسیار ساده تر از آن است که شما فکر می کنید ، زیرا همه توسعه دهندگان خوب تقریباً همه چیز را در مورد برنامه هایی که توسعه می دهند می دانند. بنابراین ، شما باید مقداری را که برنامه شما برای انجام یک کار (مقادیر وابسته) نیاز دارد ، بدانید و درک کنید که هر مقدار بالقوه موجود دیگر یک مقدار تأیید نشده است.

نوشتن کد امن

فرض کنید می خواهید برنامه ای ایجاد کنید که فقط دو مقدار معتبر را از کاربر بپذیرد و به آنها اضافه کند. با این یک جمله ، شما به عنوان یک توسعه دهنده خوب ، همه چیز را در مورد برنامه خود می دانید. شما تمام مقادیری را که این برنامه پذیرفته است می دانید (مقادیر صحیح) و می دانید که این برنامه چه وظیفه ای را انجام خواهد داد (افزودن فرایند).

ایجاد یک برنامه در جاوا یک مثال است

 
import java.util.Scanner;
public class Main {
//The main function that executes the program and collects the two values
public static void main(String[] args) {
System.out.println("Please enter your two integer values: ");
int value1;
int value2;
Scanner input = new Scanner(System.in);
value1 = input.nextInt();
value2 = input.nextInt();
addition(value1, value2);
input.close();
}
//the function that collects the two values and displays their sum
private static void addition(int value1, int value2) {
int sum;
sum = value1 + value2;
System.out.println("The sum of the two integer values you entered: "+ sum);
}
}

کد بالا یک برنامه کاربردی ایجاد می کند که دقیقاً شرایط را برآورده می کند. در زمان اجرا ، خط زیر را در کنسول نمایش می دهد:

 
Please enter your two integer values:

برنامه تا زمانی که کاربر دو مقدار صحیح در کنسول وارد نکند ، مکث خواهد کرد (این به معنای وارد کردن مقدار اول ، فشار دادن کلید enter و تکرار است).

اگر کاربر هر دو مقدار را وارد کند 5 و 4 در کنسول ، برنامه خروجی های زیر را نمایش می دهد:

 
The sum of the two integer values you entered: 9

این عالی است؛ این برنامه دقیقاً همان کاری را انجام می دهد که باید انجام دهد. با این حال ، اگر کاربر ننگین ظاهر شود و مقدار نادرستی مانند “g” را در برنامه شما وارد کند ، مشکلی پیش می آید. این به این دلیل است که هیچ کدی برای محافظت در برابر مقادیر پشتیبانی نشده در برنامه وجود ندارد.

در این مرحله ، برنامه شما خراب می شود و یک پورتال بالقوه در برنامه شما برای هکری ایجاد می کند که دقیقاً می داند چه کاری باید انجام دهد.

نمونه ای از محافظت از نرم افزار شما

 
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
//The main function that executes the program and collects the two values
public static void main(String[] args) {
try {
System.out.println("Please enter your two integer values: ");
int value1;
int value2;
//using the scanner class to read each input from the user,
//and assign it to is respective variable (throws an exception if the values are not integers)
Scanner input = new Scanner(System.in);
value1 = input.nextInt();
value2 = input.nextInt();
//calls the addition function and passes the two values to it
addition(value1, value2);
//closes the input stream after it has come to the end of its use
input.close();
//handle all the errors thrown in the try block
}catch(InputMismatchException e){
System.out.println("Please enter a valid integer value.");
}catch(Exception e) {
System.out.println(e.getMessage());
}
}
//the function that collects the two values and displays their sum
private static void addition(int value1, int value2) {
int sum;
sum = value1 + value2;
System.out.println("The sum of the two integer values you entered: "+ sum);
}
}

کد فوق بی خطر است زیرا موارد استثنایی را کنترل می کند. بنابراین ، اگر مقدار نادرستی وارد کنید ، برنامه هنگام ایجاد خط کد زیر به درستی خاتمه می یابد:

 
Please enter a valid integer value.

مدیریت استثنا چیست؟

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

اگر نگاهی دقیق به مثال بالا بیندازید ، متوجه می شوید که دو بلوک گرفتن وجود دارد. اولی بحث می کند InputMismatchException ؛ این نام استثنائی است که در صورت وارد کردن مقدار نادرست کنار گذاشته می شود. دومی بحث می کند استثنا و این مهم است زیرا هدف آن شناسایی هرگونه استثنا در کد است که سازنده در هنگام آزمایش پیدا نکرده است.

مرتبط: استثناهای جاوا: آیا شما آن را درست انجام می دهید؟

کد خود را تست کنید

قبل از بسته بندی هرگز نباید قدرت تست و آزمایش مجدد کد را دست کم بگیرید. بسیاری از توسعه دهندگان (و کاربران برنامه های خود) با دسترسی عمومی به نرم افزار ، اشکالات جدیدی پیدا می کنند.

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

موضوعات مرتبط: چگونه اولین نرم افزار تست شغل خود را دریافت کنیم

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

حقیقت این است که شما ممکن است نتوانید تمام خطاهای احتمالی را تشخیص دهید. به همین دلیل است که مدیریت خطا همزمان با آزمایش کد شما کار می کند. آزمایش نرم افزار فوق نشان می دهد که یک خطای احتمالی در یک سناریو مشخص رخ می دهد.

با این حال ، اگر در طول آزمایش خطای دیگری رخ ندهد ، بلوک ضبط دوم در کد بالا آن را کنترل می کند.

از پایگاه داده خود محافظت کنید

اگر برنامه شما به یک پایگاه داده متصل است ، بهترین راه جلوگیری از دسترسی به آن پایگاه داده اطمینان از محافظت از تمام جنبه های برنامه شماست. با این حال ، اگر برنامه فقط با هدف تهیه رابط کاربری برای پایگاه داده گفته شود ، چه می کنید؟

در اینجا همه چیز جالب تر می شود. پایگاه داده در ساده ترین شکل به کاربر امکان افزودن ، بازیابی ، به روزرسانی و حذف داده ها را می دهد. سیستم مدیریت پایگاه داده برنامه ای است که به کاربر امکان تعامل مستقیم با پایگاه داده را می دهد.

بیشتر پایگاه های داده حاوی داده های حساس هستند ، بنابراین ، برای حفظ یکپارچگی این داده ها و محدود کردن دسترسی به آنها ، یک نیاز وجود دارد – کنترل دسترسی.

قدرت کنترل دسترسی

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

همچنین باید بتواند از دسترسی کاربر ثبت شده به داده هایی که مجاز به تعامل یا ویرایش آنها نیست جلوگیری کند.

امنیت نرم افزار یک مهارت مهم برای همه توسعه دهندگان است

توسعه نرم افزار خوب مترادف با اطمینان از مقاومت نرم افزار در برابر حمله مخرب است. این تنها با نوشتن یک کد امنیتی ، آزمایش مداوم برنامه و کنترل کنترل بر روی افرادی که به داده های شما دسترسی دارند ، حاصل می شود.

هنگامی که بدانید چگونه از نرم افزار خود محافظت کنید ، ممکن است بخواهید برخی مراحل توسعه نرم افزار را یاد بگیرید.



منبع

Author: terem

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *