10 نصائح لتجنب عيوب البرمجيات الرئيسية

مؤلف: Eugene Taylor
تاريخ الخلق: 15 أغسطس 2021
تاريخ التحديث: 11 قد 2024
Anonim
10 نصائح في علم النفس تساعدك على تنظيم حياتك
فيديو: 10 نصائح في علم النفس تساعدك على تنظيم حياتك

المحتوى



المصدر: Kentoh / Dreamstime.com

يبعد:

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

تحتوي جميع البرامج على عيوب ، خاصة في الكود المعقد اليوم مع آلاف الأسطر التي يجب صياغتها تمامًا. يدرك معهد مهندسي الكهرباء والإلكترونيات (IEEE) هذه المعضلة. بداية من عام 2014 ، أطلقت IEEE مبادرة جديدة: مركز مجتمع الكمبيوتر للتصميم الآمن (CSD). مهمتها؟ لتوفير إرشادات حول التعرف على أنظمة البرامج التي تكون عرضة للتسوية ، وتصميم وبناء أنظمة برمجية ذات خصائص أمان قوية يمكن تحديدها

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

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


ما هو التصميم الآمن؟

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

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

10 نصائح لتجنب عيوب البرمجيات الرئيسية

مع وجود التعاريف المعمول بها ، دعونا نلقي نظرة على أكثر العيوب شيوعًا التي تظهر في البرنامج اليوم.

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


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

No Bugs، No Stress - دليلك خطوة بخطوة لإنشاء برامج لتغيير الحياة دون تدمير حياتك

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

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

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

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

تحديد نهج يضمن التحقق من صحة البيانات بوضوح
تقوم أنظمة البرامج ومكوناتها بافتراضات حول البيانات التي يقومون بتشغيلها. يجب التأكد من أن الافتراضات ثابتة. تنشأ الثغرات الأمنية من الافتراضات الخاطئة. توصي لجنة التنمية المستدامة بما يلي:

  • تصميم أو استخدام آليات التحقق المركزية.
  • تحويل البيانات إلى شكل قانوني.
  • استخدام مكتبات مشتركة من بدائل التحقق من الصحة.
  • تصميم التحقق من صحة إدخال التنفيذ ليكون على دراية بالحالة.

استخدم التشفير بشكل صحيح
تعترف CSD بأن الحصول على تشفير صحيح أمر صعب. ومع ذلك ، فإن عدم القيام بذلك بشكل صحيح يؤدي إلى:

  • إساءة استخدام المكتبات والخوارزميات
  • سوء إدارة المفاتيح
  • العشوائية ليست عشوائية
  • فشل في تشفير المركزية
  • الفشل في السماح للتكيف الخوارزمية والتطور

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

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

  • معلومات حول اللوائح الحكومية والصناعية التي تنطبق على المنظمة
  • أم لا تنطبق سرية البيانات
  • كيف يتم التعامل مع البيانات عند انتقالها

دائما النظر في المستخدمين
فشل المطورين في النظر إلى المستخدمين يمكن أن يؤدي إلى العديد من المشكلات ، بما في ذلك:

  • التصعيد امتياز
  • المستخدمين الكشف عن المعلومات الحساسة
  • إجراءات أمنية معقدة تعمل على تحسين احتمالات الاستخدام غير الصحيح أو عدم الاستخدام.

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

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

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

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

  • خصائص الأمان تتغير بمرور الوقت ، مثل عندما يتم تحديث الكود
  • القدرة على عزل أو تبديل الوظيفة
  • التغييرات في الكائنات المقصود أن تبقى سرية
  • التغييرات في خصائص أمان المكونات الخارجة عن إرادتك

خذ مثيرة للاهتمام لماذا البرنامج لا يزال غير آمن

على مدونة Cigital ، قدم المستشار الرئيسي Jim Delgrosso أسبابًا تجعل حتى المحترفين قد يصممون برنامجًا يحتوي على واحد أو أكثر من العيوب المذكورة أعلاه:

  • من الصعب الحصول على بعض هذه العيوب في كل وقت.
  • نحن بشر ، والبشر يخطئون.
  • قد يصعب العثور على عيوب التصميم.

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