كمبرمج أو مطور، لا يمكن التغاضي عن أهمية إنشاء تطبيقات آمنة.
يعالج أمان البرامج إدارة الهجمات الضارة من خلال تحديد نقاط الضعف المحتملة في البرامج واتخاذ الاحتياطات اللازمة لحمايتها.
لا يمكن أبدًا أن تكون البرامج آمنة بنسبة 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 - وهذا هو اسم الاستثناء الذي يتم طرحه إذا تم إدخال قيمة غير صحيحة. يأخذ الثاني وسيطة Exception ، وهذا مهم لأن الغرض منه هو العثور على أي استثناءات في الكود لم يجدها المطور أثناء الاختبار.
تحقق من الرمز
يجب ألا تقلل أبدًا من قوة اختبار الكود وإعادة اختباره. يجد العديد من المطورين (ومستخدمي التطبيق) أخطاء جديدة بعد إتاحة البرنامج للجمهور.
يضمن الاختبار الشامل للتعليمات البرمجية الخاصة بك أنك تعرف ما سيفعله تطبيقك في كل موقف يمكن تصوره، وهذا يسمح لك بحمايته من خروقات البيانات.
النظر في المثال أعلاه. ماذا لو، بمجرد الانتهاء، قمت باختبار التطبيق بقيم صحيحة فقط؟ يمكنك ترك التطبيق معتقدًا أنك قد حددت جميع الأخطاء المحتملة بنجاح، في حين أنك لم تفعل ذلك في الواقع.
الحقيقة هي أنك قد لا تكون قادرًا على تحديد جميع الأخطاء المحتملة. ولهذا السبب تعمل معالجة الأخطاء جنبًا إلى جنب مع اختبار التعليمات البرمجية الخاصة بك. يكشف اختبار البرنامج أعلاه عن خطأ محتمل سيحدث في موقف معين.
ومع ذلك، إذا كان هناك خطأ آخر لم يظهر أثناء الاختبار، فستتعامل معه كتلة الالتقاط الثانية في الكود أعلاه.
أمن قاعدة البيانات
إذا كان تطبيقك يتصل بقاعدة بيانات، فإن أفضل طريقة لمنع الوصول إلى قاعدة البيانات تلك هي التأكد من أن جميع جوانب التطبيق آمنة. ومع ذلك، ماذا لو تم تصميم التطبيق الخاص بك لغرض وحيد هو توفير واجهة لقاعدة البيانات المذكورة؟
هذا هو المكان الذي تصبح فيه الأمور أكثر إثارة للاهتمام. تسمح قواعد البيانات، في أبسط أشكالها، للمستخدمين بإضافة البيانات واسترجاعها وتحديثها وحذفها. نظام إدارة قاعدة البيانات هو تطبيق يتيح للمستخدمين التفاعل مباشرة مع قاعدة البيانات.
تحتوي معظم قواعد البيانات على بيانات حساسة، لذلك، للحفاظ على التكامل والحد من الوصول إلى هذه البيانات، هناك شرط - التحكم في الوصول.
صلاحية التحكم صلاحية الدخول
يسعى التحكم في الوصول إلى الحفاظ على سلامة قاعدة البيانات من خلال تحديد أنواع الأشخاص الذين يمكنهم الوصول إلى قاعدة البيانات وتقييد نوع الوصول الذي لديهم. لذلك، يجب أن يكون نظام إدارة قاعدة البيانات الجيد قادرًا على تسجيل من قام بالوصول إلى قاعدة البيانات ومتى وماذا فعلوا.
ويمكنه أيضًا منع المستخدمين المسجلين من الوصول إلى البيانات التي لا يُسمح لهم بالتفاعل معها أو تحريرها.