كمبرمج أو مطور ، لا يمكن المبالغة في أهمية إنشاء تطبيقات آمنة.

يتعامل أمان البرامج مع إدارة الهجمات الضارة من خلال تحديد نقاط الضعف المحتملة في البرامج واتخاذ الاحتياطات اللازمة للحماية منها.

لا يمكن أن يكون البرنامج آمنًا بنسبة 100٪ أبدًا لأن المطور يمكنه التغاضي عن خطأ ما أو إنشاء أخطاء جديدة في محاولة لإصلاح الحالات الموجودة أو إنشاء ثغرات أمنية جديدة من خلال التحديثات.

ومع ذلك ، هناك نوعان من الممارسات الرئيسية التي يمكن لجميع مطوري البرامج استخدامها لضمان قيامهم بإنشاء رمز آمن للكتابة البرمجية في المقام الأول ، واختبار التعليمات البرمجية الخاصة بك بكفاءة.

كيفية كتابة رمز آمن

تنزل كتابة رمز آمن إلى شيء واحد يتعامل مع الخطأ. إذا كان بإمكانك توقع كل قيمة محتملة قد يقدمها المستخدم لتطبيقك وإنشاء استجابة في برنامجك لهذه القيمة ، فأنت تكتب رمزًا آمنًا.

هذا أبسط بكثير مما تعتقد لأن جميع المطورين الجيدين يعرفون كل شيء تقريبًا عن التطبيقات التي يطورونها. لذلك ، يجب أن تعرف كل قيمة يتطلبها تطبيقك لتنفيذ مهمة (القيم المعتمدة) وأن تفهم أن كل قيمة أخرى ممكنة موجودة هي قيمة غير معتمدة.

كتابة رمز آمن

instagram viewer

لنفترض أنك تريد إنشاء برنامج لا يقبل سوى قيمتين صحيحتين من مستخدم وينفذ عملية إضافة عليهما. بهذه الجملة المنفردة ، كمطور جيد ، فأنت تعرف الآن كل شيء عن تطبيقك. أنت تعرف كل القيم التي سيقبلها هذا البرنامج (قيم صحيحة) وتعرف المهمة التي سيكملها هذا البرنامج (عملية إضافة).

إنشاء البرنامج في Java مثال


استيراد java.util. الماسح الضوئي؛
فئة عامة رئيسية {
// الوظيفة الرئيسية التي تنفذ البرنامج وتجمع القيمتين
العامة الثابتة الفراغ الرئيسي (سلسلة [] args) {
System.out.println ("الرجاء إدخال قيمتين صحيحتين:")؛
قيمة int1 ؛
قيمة int2 ؛
إدخال الماسح = الماسح الجديد (System.in) ؛
value1 = input.nextInt () ،
value2 = input.nextInt () ،
الجمع (القيمة 1 ، القيمة 2) ؛
input.close () ؛
}
// الوظيفة التي تجمع القيمتين وتعرض مجموعهما
إضافة الفراغ الثابت الخاص (int value1، int value2) {
مجموع int
المجموع = القيمة 1 + القيمة 2 ؛
System.out.println ("مجموع قيمتي العدد الصحيح اللذين أدخلتهما:" + sum)؛
}
}

ينتج الكود أعلاه تطبيقًا يطابق المتطلبات بدقة. عند التنفيذ ، سينتج السطر التالي في وحدة التحكم:


الرجاء إدخال قيمتين صحيحتين:

سيظل التطبيق متوقفًا مؤقتًا حتى يقوم المستخدم بإدخال قيمتين صحيحتين في وحدة التحكم (وهذا يعني كتابة القيمة الأولى ، والضغط على مفتاح الإدخال ، والتكرار).

إذا قام المستخدم بإدخال القيم 5 و 4 في وحدة التحكم ، سينتج البرنامج المخرجات التالية:


مجموع قيمتين صحيحتين أدخلتهما: 9

هذا عظيم؛ يقوم البرنامج بما يجب أن يفعله بالضبط. ومع ذلك ، إذا جاء مستخدم شائن وأدخل قيمة غير صحيحة ، مثل "g" ، في تطبيقك ، فستكون هناك مشكلات. هذا لأنه لا يوجد رمز في التطبيق يحمي من القيم غير المعتمدة.

في هذه المرحلة ، سيتعطل تطبيقك ، مما يؤدي إلى إنشاء بوابة محتملة في تطبيقك للمتسلل الذي يعرف بالضبط ما يجب فعله بعد ذلك.

مثال تأمين برنامجك


استيراد java.util. InputMismatchException ؛
استيراد java.util. الماسح الضوئي؛
فئة عامة رئيسية {
// الوظيفة الرئيسية التي تنفذ البرنامج وتجمع القيمتين
العامة الثابتة الفراغ الرئيسي (سلسلة [] args) {
يحاول {
System.out.println ("الرجاء إدخال قيمتين صحيحتين:")؛
قيمة int1 ؛
قيمة int2 ؛
// استخدام فئة الماسح لقراءة كل مدخلات من المستخدم ،
// وتعيينه إلى المتغير المعني (يطرح استثناءً إذا لم تكن القيم أعدادًا صحيحة)
إدخال الماسح = الماسح الجديد (System.in) ؛
value1 = input.nextInt () ،
value2 = input.nextInt () ،
// يستدعي وظيفة الإضافة ويمرر القيمتين إليها
الجمع (القيمة 1 ، القيمة 2) ؛
// يغلق تدفق الإدخال بعد انتهاء استخدامه
input.close () ؛
// معالجة جميع الأخطاء التي تم إلقاؤها في كتلة try
} catch (InputMismatchException e) {
System.out.println ("الرجاء إدخال قيمة صحيحة صحيحة.")؛
} catch (استثناء هـ) {
System.out.println (e.getMessage ()) ؛
}
}
// الوظيفة التي تجمع القيمتين وتعرض مجموعهما
إضافة الفراغ الثابت الخاص (int value1، int value2) {
مجموع int
المجموع = القيمة 1 + القيمة 2 ؛
System.out.println ("مجموع قيمتي العدد الصحيح اللذين أدخلتهما:" + sum)؛
}
}

الكود أعلاه آمن لأنه يقوم بمعالجة الاستثناءات. لذلك ، إذا أدخلت قيمة غير صحيحة ، فسينتهي البرنامج بشكل صحيح أثناء إنتاج السطر التالي من التعليمات البرمجية:


الرجاء إدخال قيمة صحيحة للعدد الصحيح.

ما هو التعامل مع الاستثناءات؟

بشكل أساسي ، معالجة الاستثناءات هي الإصدار الحديث من معالجة الأخطاء ، حيث تقوم بفصل رمز معالجة الأخطاء عن كود المعالجة العادي. في المثال أعلاه ، كل كود المعالجة العادي (أو الكود الذي من المحتمل أن يطرح استثناء) يقع داخل ملف يحاول بلوك ، وكل رمز معالجة الأخطاء موجود بداخله قبض على كتل.

إذا ألقيت نظرة فاحصة على المثال أعلاه ، ستجد أن هناك مجموعتين من كتل الصيد. أول واحد يأخذ InputMismatchException جدال؛ هذا هو اسم الاستثناء الذي يتم طرحه إذا تم إدخال قيمة غير صحيحة. الثاني يأخذ استثناء حجة ، وهذا مهم لأن الغرض منه هو اكتشاف أي استثناء داخل الكود لم يجده المطور أثناء الاختبار.

متعلق ب: استثناءات Java: هل تتعامل معها بشكل صحيح؟

اختبار التعليمات البرمجية الخاصة بك

يجب ألا تقلل أبدًا من قوة اختبار الكود الخاص بك وإعادة اختباره قبل التعبئة والتغليف. يجد العديد من المطورين (ومستخدمي تطبيقاتهم) أخطاءً جديدة بعد أن يصبح البرنامج متاحًا للجمهور.

سيضمن الاختبار الدقيق للرمز الخاص بك أنك تعرف ما سيفعله تطبيقك في ظل كل سيناريو يمكن تصوره ، وهذا يمكّنك من حماية تطبيقك من انتهاكات البيانات.

متعلق ب: كيف تحصل على أول وظيفة لاختبار البرمجيات

خذ بعين الاعتبار المثال أعلاه. ماذا لو ، بعد الانتهاء ، اختبرت التطبيق فقط بقيم صحيحة؟ يمكنك الابتعاد عن التطبيق معتقدًا أنك نجحت في تحديد جميع الأخطاء المحتملة عندما لا يكون الأمر كذلك.

الحقيقة هي أنك قد لا تكون قادرًا على تحديد جميع الأخطاء المحتملة ؛ هذا هو السبب في أن معالجة الأخطاء تعمل جنبًا إلى جنب مع اختبار التعليمات البرمجية الخاصة بك. يُظهر اختبار البرنامج أعلاه حدوث خطأ محتمل واحد في سيناريو محدد.

ومع ذلك ، إذا كان هناك خطأ آخر لم يظهر أثناء الاختبار ، فستتعامل معه كتلة catch الثانية في الشفرة أعلاه.

تأمين قاعدة البيانات الخاصة بك

إذا كان تطبيقك يتصل بقاعدة بيانات ، فإن أفضل طريقة لمنع الوصول إلى قاعدة البيانات هذه هي التأكد من أن جميع جوانب التطبيق الخاص بك آمنة. ومع ذلك ، ماذا لو تم تصميم التطبيق لغرض وحيد هو توفير واجهة لقاعدة البيانات المذكورة؟

هذا هو المكان الذي تصبح فيه الأشياء أكثر إثارة للاهتمام. تسمح قاعدة البيانات ، في أبسط أشكالها ، للمستخدم بإضافة البيانات واستردادها وتحديثها وحذفها. نظام إدارة قواعد البيانات هو تطبيق يسمح للمستخدم بالتفاعل مباشرة مع قاعدة البيانات.

تحتوي معظم قواعد البيانات على بيانات حساسة ، لذلك ، للحفاظ على سلامة هذه البيانات والحد من الوصول إليها ، هناك شرط واحد للتحكم في الوصول.

صلاحية التحكم صلاحية الدخول

يسعى التحكم في الوصول إلى الحفاظ على تكامل قاعدة البيانات من خلال تحديد نوع الأشخاص الذين يمكنهم الوصول إلى قاعدة البيانات وتقييد نوع الوصول الذي لديهم. لذلك ، يجب أن يكون نظام إدارة قاعدة البيانات الجيد قادرًا على تسجيل من يصل إلى قاعدة البيانات ، وفي أي وقت ، وماذا فعلوا.

يجب أن يكون أيضًا قادرًا على منع المستخدم المسجل من الوصول إلى البيانات التي ليس مصرح له بالتفاعل معها أو تحريرها.

أمن البرمجيات هو مهارة حاسمة لجميع المطورين

يعد تطوير برامج جيدة مرادفًا لضمان قدرة برنامجك على تحمل أي هجوم ضار. لا يمكن تحقيق ذلك إلا من خلال كتابة رمز آمن ، والاختبار المستمر للتطبيق ، والحفاظ على التحكم في من يمكنه الوصول إلى بياناتك.

الآن بعد أن عرفت كيفية تأمين برنامجك ، قد ترغب في التعرف على بعض خطوات تطوير البرامج.

بريد إلكتروني
6 خطوات لتطوير البرمجيات يجب على جميع المبرمجين معرفتها

تستعد لترميز برنامجك الأول؟ تأكد من اتباع خطوات تطوير البرامج الأساسية هذه.

اقرأ التالي

مواضيع ذات صلة
  • برمجة
  • الأمن الإلكتروني
  • نصائح الترميز
عن المؤلف
قاديشا كين (15 مقالة منشورة)

قاديشا كين مطور برامج متكامل وكاتب تقني / تقني. لديها قدرة مميزة على تبسيط بعض المفاهيم التكنولوجية الأكثر تعقيدًا ؛ إنتاج مادة يمكن لأي مبتدئ في مجال التكنولوجيا فهمها بسهولة. إنها شغوفة بالكتابة وتطوير البرامج الشيقة والسفر حول العالم (من خلال الأفلام الوثائقية).

المزيد من Kadeisha Kean

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

خطوة أخرى أيضا…!

يرجى تأكيد عنوان بريدك الإلكتروني في البريد الإلكتروني الذي أرسلناه لك للتو.

.