تطوير البرمجيات الآمن / متوسط: حدود التنفيذ والتحقق / الدرس 12
تصميم تحقق أمني يستطيع كشف الفشل
مطابقة المراجعة والاختبارات بالادعاءات وفحص رفض الحكم لملاحظة خاطئة.
في هذه الصفحة
أهداف الدرس
- اختيار دليل لادعاء منع أو كشف أو تعاف محدد.
- فصل وجود الاختبار وتنفيذه وقوة تأكيده.
البدء بالادعاء والعيب المحتمل
بالنسبة إلى متطلب تصدير البيانات، يتمثل عيب محتمل في إعادة بيانات الاتصال الخاصة بورشة غير مسندة إلى المنظم. يجب أن تميز حالة التحقق المفيدة هذه النتيجة الخاطئة عن إسقاط الحقول المسموح، لا أن تفحص عودة كائن من المعالج فقط. حدد الدليل اللازم للمنع، والتشخيص الذي يدعم الكشف، وطريقة تقييم التعافي؛ فهي ادعاءات مستقلة. قد تكشف مراجعة ثابتة شرط نطاق مفقودا، ويظهر اختبار مكون منفذ سلوك المعالج المركب ببيانات مملوكة. لا يثبت أحدهما منفردا غياب كل عيوب المنتج.
فحص قدرة معيار الحكم على التمييز
قد يوجد تأكيد ويظل أضعف من المطلوب. إذا قارن مجموعة المعرفات فقط، فقد تختفي السجلات المحمية المكررة من المقارنة. يقيم البرنامج ملاحظة مختلقة صحيحة وأخرى غير صحيحة بمساواة تحفظ عدد التكرارات. إنه يتحقق من معيار الحكم لا من التطبيق. تتيح الملاحظات المختلقة الخاطئة عمدا مراجعة قوة التأكيد بأمان دون تعديل نظام حي. أدرج نتيجة مسموحة صغيرة ونتيجة من نطاق آخر ونتيجة مكررة عندما تهم هذه العيوب. استخرج التوقع من عقد مراجع، لا من المساعد نفسه الذي تختبره.
from collections import Counter
expected = ["registration-1", "registration-2"]
def accepted(observed):
return Counter(observed) == Counter(expected)
assert accepted(["registration-2", "registration-1"]) is True
assert accepted(["registration-1", "registration-2", "registration-2"]) is False
assert accepted(["registration-1", "other-scope"]) is False
print("oracle rejects duplicate and cross-scope observations")
oracle rejects duplicate and cross-scope observations
يفحص البرنامج الكامل ثلاث ملاحظات بعقد خيالي غير مرتب ويحفظ التعدد. لا يثبت تطبيق النطاق في نقطة نهاية، ولا يناسب وعد ترتيب محدد.
فصل المختار والمنفذ والناجح
قد تعلن الحزمة النجاح مع إغفال الحالة الأمنية المهمة. احتفظ بالقائمة المقصودة وقائمة التنفيذ الفعلي كي يمكن مقارنتهما. يكشف البرنامج غياب حالة رفض بدلا من افتراض اكتمال مجموعة مختارة ناجحة. إنه حساب لتنظيم السجل، لا مشغل اختبارات. تحتاج سجلات التنفيذ الفعلية مراجعة المصدر وبيانات الاختبار والبيئة ونتيجة الخروج ومخرجات ذات معنى. لا يثبت اسم اختبار يحوي security وجود تأكيدات مناسبة، ولا تبين نسبة تغطية الشفرة أن السياسة أو الأثر الجانبي الصحيح فحص.
intended = {"assigned-export", "different-organizer-denied", "duplicate-no-notice"}
executed = {"assigned-export", "duplicate-no-notice"}
missing = sorted(intended - executed)
assert missing == ["different-organizer-denied"]
assert not intended <= executed
print("missing denial case detected")
missing denial case detected
يكشف البرنامج الكامل حالة ناقصة معلنة ولا يشغل الحالات أو يفحص CI. الأسماء خيالية وتبقى النتيجة منتظرة حتى يوفر تنفيذ مصرح به دليلا.
استخدام نتائج الأدوات مدخلات للاستدلال
يرى التحليل الثابت وتحليل التبعيات والتحقق الديناميكي أجزاء مختلفة من النظام، وتختلف أنماط نتائجها الخاطئة الإيجابية والسلبية. تحتاج نتيجة الأداة سياق مسار الشفرة والتحكم بالقيمة وتفسير الوجهة والدفاعات الموجودة. لا يثبت التقرير النظيف أمانا كاملا. لا تشغل ماسحات ضد تطبيقات مهيأة أو تثبت حزما لهذا الدرس. تعلم بدلا من ذلك حفظ النتيجة وتكوين فرضية محدودة واختيار إعادة محلية مناسبة أو مراجعة مصرح بها. ارفق إصدار الأداة وافتراضات قاعدتها بأي دليل فعلي.
فحص الإصلاح والسلوك المجاور
يفشل انحدار مفيد عند وجود العيب القديم وينجح مع الإصلاح المقصود. إذا لم يفشل قط، فتحقق من فحص المسار نفسه ومن عدم تساهل الحكم. أضف السلوك المشروع المجاور كي لا ينجح الإصلاح بحجب كل العمل أو إسكات كل حدث. وسع التحقق عندما تبرره آلية مشتركة أو خطر غير محسوم، لا بتكرار حزم غير متعلقة بلا نهاية. حدد بالضبط البرامج المنفذة وحدود المنصة غير المنفذة. يجعل هذا الانضباط حزمة التحقق قابلة للمراجعة، ويحفظ عدم اليقين الذي تحتاجه قرارات الإصدار المسؤولة.
الأخطاء الشائعة وإصلاحها
تسمى مجموعة ناجحة تحققا كاملا
- لماذا يحدث؟
- لا تقارن بالقائمة المقصودة.
- كيف تصلحه؟
- سجل الناقص ونفذ الفحوص المناسبة المصرح بها.
- كيف تتجنب تكراره؟
- اجعل الاختيار والقوائم قابلين للمراجعة.
ينجح الانحدار قبل الإصلاح
- لماذا يحدث؟
- قد لا يميز العيب.
- كيف تصلحه؟
- راجع المسار والبيانات والحكم بملاحظة خاطئة.
- كيف تتجنب تكراره؟
- احفظ دليل كشف الفشل.
يعد التقرير النظيف إثبات أمان
- لماذا يحدث؟
- تهمل حدود الأداة.
- كيف تصلحه؟
- حدد الحد وأضف دليل الادعاءات الأخرى.
- كيف تتجنب تكراره؟
- راجع النتائج والغياب بافتراضات صريحة.
اختبر فهمك
1. لماذا تمرر ملاحظة خاطئة عمدا إلى مساعد التأكيد؟
اعرض الحل المشروح
لكي تعرف هل يستطيع معيار الحكم رفض عيب محتمل دون تغيير نظام حي. إذا نجحت قيم مكررة أو من نطاق آخر، فقو المقارنة بحسب العقد. تكمل مراجعة معيار الحكم تنفيذ حد التطبيق، ولا تستبدله.
2. يحجب الإصلاح كل تصدير، وتنجح حالات الرفض كلها. هل التحقق كاف؟
اعرض الحل المشروح
لا. أدرج تصديرا مشروعا لمنظم مسند، مع الحقول المسموحة والآثار المتوقعة بدقة. يشمل متطلب الأمن سلوكا مفيدا مسموحا، لا الرفض وحده. تأكد من رفض العيب القديم مع بقاء العملية المقصودة متاحة عند الحد المختبر.
أهم ما تعلمته
- يحتاج التحقق حكما مميزا وتنفيذا مناسبا.
- الاختيار والتنفيذ وقوة التأكيد مسائل مستقلة.
- يشمل دليل الإصلاح السلوك المشروع المجاور.