تطوير البرمجيات الآمن / أساسي: النتائج والنماذج والقرارات / الدرس 4
تصميم حالات إساءة دون هجمات تشغيلية
تحدي افتراضات العمل بسيناريوهات محلية آمنة وثوابت محمية صريحة.
في هذه الصفحة
أهداف الدرس
- التمييز بين سيناريو إساءة واسم ضعف عام.
- بناء حالات سلبية محدودة وفحص بقاء الاستخدام المشروع.
وصف نتيجة عمل غير مرغوبة
تشرح حالة الإساءة كيفية استخدام ميزة للحصول على نتيجة يجب أن يمنعها المنتج. في خدمة الورش، قد يحاول منظم تصدير بيانات الاتصال بحضور منظم آخر، أو يتجاوز تغيير تسجيل قاعدة السعة. سم قدرة الفاعل، والإجراء المقصود، والثابت المنتهك، والأصل المتأثر. قد يساعد اسم مثل الحقن أو خلل التحكم بالوصول في التصنيف لاحقا، لكنه لا يشكل سيناريو كاملا. يجب أن يفهم مراجعو المنتج والتطوير الحالة دون الحاجة إلى تعليمات استغلال أو هدف حي.
تغيير قدرة واحدة كل مرة
اجعل نموذج القدرة محدودا: يستطيع منظم عادي مسجل الدخول اختيار معرف ورشة، لكنه لا يستطيع تعيين الفاعل الموثوق الذي ينشئه التطبيق. لذلك يغير الاختبار المحلي المورد المطلوب مع إبقاء الفاعل ثابتا. لا تفترض سلطة إدارية بلا حدود ما لم يدرس السيناريو ذلك الحد صراحة. ينمذج البرنامج الأول فحص الإسناد بمعرفات مختلقة؛ فهو يختبر فرق سياسة ولا يرسل طلبا غير مخول. يجب أن يحصل المسار الحقيقي على الفاعل ونطاق المورد عبر حدود مراجعة قبل استخدام النموذج دعما لادعاء تكامل.
assignments = {"organizer-a": {"workshop-1"}, "organizer-b": {"workshop-2"}}
def may_export(subject, workshop):
return workshop in assignments.get(subject, set())
assert may_export("organizer-a", "workshop-1") is True
assert may_export("organizer-a", "workshop-2") is False
assert may_export("unknown", "workshop-1") is False
print("bounded resource-substitution cases checked")
bounded resource-substitution cases checked
يستخدم البرنامج الكامل فاعلا ثابتا ومعرفات موارد مختلقة لفحص العلاقات. لا يوثق الفاعل أو يسرد موارد أو يتصل بهدف أو يثبت استدعاء معالج حقيقي للسياسة.
فحص قاعدة العمل عبر تغير الحالة
قد يفشل ثابت السعة عبر عمليات متتابعة، حتى عندما يبدو كل طلب منفردا عاديا. تسمح القاعدة الخيالية بتسجيلين نشطين كحد أقصى في ورشة صغيرة. يقبل البرنامج الثاني مقعدا ما دامت السعة متاحة، ثم يرفض الإضافة التالية دون زيادة العدد. هذا نموذج عمل متسلسل، وليس آلية تزامن. تحتاج الحجوزات المتزامنة في خدمة حقيقية إلى تصميم إنفاذ ذري ودليل تكامل مضبوط. لا تولد دفعات طلبات حقيقية لهذا المثال؛ فالنموذج المحلي يكفي لتوضيح السياسة المتوقعة.
def reserve(active, capacity):
if active >= capacity:
return "FULL", active
return "ACCEPTED", active + 1
status, count = reserve(1, 2)
assert (status, count) == ("ACCEPTED", 2)
status, count = reserve(count, 2)
assert (status, count) == ("FULL", 2)
print("capacity invariant preserved sequentially")
capacity invariant preserved sequentially
يفحص البرنامج الكامل انتقال قبول ورفض محليين. السعة اثنان بيانات تدريب. لا يثبت اعتمادا متزامنا أو أقفال قاعدة أو تقييد معدل أو توفر ورشة حقيقية.
ترتيب السيناريوهات بحسب معنى المنتج
اختر سيناريوهات قد تسبب إفصاحا مهما أو تغييرا غير مصرح به أو فقدان سير عمل حرج. أدرج المداخل البديلة مثل التصدير والتحديثات المجمعة والإجراءات الخلفية عندما ينطبق الثابت نفسه. لا تهدف إلى جمع أكبر عدد من الحالات ذات الأسماء المثيرة دون ارتباط بالنموذج. حدد لكل سيناريو الضابط الوقائي والملاحظة التي تكشف فشله. تستطيع حالة تدريبية استخدام السلاسل والحالة في الذاكرة لاستكشاف القرار دون جمع بيانات حقيقية أو تجربة حسابات أو توليد حمل أو تجاوز ضابط فعلي.
إبقاء السلوك المشروع ضمن المراجعة
قد يمنع دفاع يرفض كل الصادرات حالة الإساءة لكنه يعطل المنتج. اجمع كل حالة سلبية مهمة مع حالة مشروعة إيجابية، وافحص الحقول والحالة بدقة. بعد الإصلاح اختبر شروطا مجاورة، مثل فقد المنظم إسناده أو تحول التسجيل إلى ملغى. احتفظ بشرح موجز لأهمية الحالة وافتراضاتها. الناتج مجموعة مبررة من المتطلبات وحالات الانحدار الموجهة للإساءة، وليس ادعاء استكشاف كل سلوك عدائي ممكن أو إثبات أمان النظام المنشور.
الأخطاء الشائعة وإصلاحها
حالة الإساءة اسم ضعف فقط
- لماذا يحدث؟
- تغيب النتيجة والقدرة.
- كيف تصلحه؟
- اكتب الأصل والإجراء والقدرة والثابت.
- كيف تتجنب تكراره؟
- راجع السيناريو بسياق المنتج والتنفيذ.
ينجح الرفض لأن الجميع محجوب
- لماذا يحدث؟
- لا يمثل الاستخدام المشروع.
- كيف تصلحه؟
- أضف نجاح منظم مسند وإخراجا دقيقا.
- كيف تتجنب تكراره؟
- اجمع الرفض والقبول.
يوصف نموذج السعة التسلسلي بأنه يمنع السباق
- لماذا يحدث؟
- لم يفحص الإنفاذ المتزامن الذري.
- كيف تصلحه؟
- وضح حد السياسة وأسند تحقق الذرية مستقلا.
- كيف تتجنب تكراره؟
- افصل ادعاء السياسة والآلية.
اختبر فهمك
1. صمم حالة آمنة لتغيير منظم معرف الورشة من workshop-1 إلى workshop-2 في طلب التصدير.
اعرض الحل المشروح
ثبت الفاعل الموثوق organizer-a، وحدد أن إسناده يشمل workshop-1 فقط. اشترط رفض workshop-2 وعدم إنشاء ملف تصدير، وأضف حالة قبول workshop-1. نفذ السياسة المحلية فقط أو بيانات مكون معزولة مصرحا بها صراحة؛ فلا تحتاج حسابا أو هدفا حقيقيا.
2. لماذا تظل حالة السعة مهمة حتى إذا صح مخطط المدخل؟
اعرض الحل المشروح
قد يقبل المخطط شكل تسجيل عادي بينما يخالف الانتقال المطلوب سعة الورشة الحالية. اختبر ثابت العمل مقابل حالة مضبوطة، وتأكد من عدم تغير العدد عند الرفض. صحة التمثيل والسماح بتغيير الحالة خاصيتان مختلفتان.
أهم ما تعلمته
- تربط الإساءة القدرة بنتيجة منتج غير مرغوبة.
- تحتاج الحالات السلبية ثوابت وقبولا مشروعا.
- توضح النماذج المحلية السياسة دون هجمات تشغيلية.