تطوير البرمجيات الآمن / دليل حلول تحريري
تشخيص تغير صلاحية تنزيل نتيجة خلفية
تتبع إذن الطلب وسياق الوظيفة ونطاق النتيجة والإسناد الحالي والانتهاء كقرارات مستقلة.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
قد ينزل منظم تصديرا مخزنا لبيانات الحضور بعد فقد إسناد الورشة، أو يرفض منظم مشروع بعد اكتمال الوظيفة. وربما اجتاز إنشاء الطلب فحص الصلاحية. احفظ الفاعل والورشة والوظيفة والنتيجة وتسلسل تغير الإسناد والنتيجة العامة بقيم مختلقة، دون جمع بيانات اتصال حضور أو اعتمادات حقيقية.
افهم الأسباب المحتملة
- قد يعتمد التصميم سلطة وقت الطلب دون تعريف الاسترجاع اللاحق، أو ينقل سمات فاعل يرسلها العميل إلى الوظيفة، أو يستخدم إسنادا مخزنا قديما، أو يخلط عدم الانتهاء بالإذن، أو يهمل نطاق النتيجة والورشة. تحدد سياسة السلطة الموثقة السلوك الصحيح. تختلف قاعدة الإسناد الحالي عن تفويض مراجع صريح، ولا يجوز استبدال إحداهما بالأخرى كافتراض.
حسم سياسة السلطة قبل تغيير الفحوص
حدد سلطة من تنطبق عند الإنشاء والمعالجة والاسترجاع، وأثر إزالة الإسناد وتعطيل الفاعل والانتهاء في كل مرحلة. لا تعطل فحص الاسترجاع تلقائيا لتمرير حالة مشروعة. حدث نموذج التدفق بالنتيجة المخزنة وعمرها، ثم حدد الحقائق الموثوقة التي يستخدمها كل مكون. يختار الدليل الإسناد الحالي مع عدم انتهاء النتيجة كسياسة خيالية. لا يفرض النموذج على كل منتج أو يدعي تطبيق خدمة فعلية له.
اختبار الإذن والنطاق والوقت مستقلين
يفصل المثال الإسناد ونطاق النتيجة والوقت في المدخلات. يقبل العلاقة الحالية المشروعة، ويرفض الإزالة قبل الانتهاء، ويرفض النتيجة المنتهية رغم الإسناد. الحقائق محلية معلنة؛ ويأخذها المعالج الحقيقي من حدود هوية وتخزين موثوقة. لا يمنح معامل طلب يقول currentAssignment=true سلطة. أدرج ربط النتيجة بالورشة كي لا يفتح إسناد واحد كل النتائج. لا يشغل البرنامج وظيفة أو يتحقق من جلسة أو يقرأ تخزينا أو يثبت حداثة الذاكرة المؤقتة.
def may_download(assigned, result_workshop, requested_workshop, now, expires):
return assigned is True and result_workshop == requested_workshop and now < expires
assert may_download(True, "w1", "w1", 99, 100) is True
assert may_download(False, "w1", "w1", 99, 100) is False
assert may_download(True, "w1", "w1", 100, 100) is False
assert may_download(True, "w2", "w1", 99, 100) is False
print("download relationship, scope, and expiry distinguished")
download relationship, scope, and expiry distinguished
يفحص البرنامج الكامل أربع حالات سياسة خيالية دون حركة HTTP. يستخدم الوقت الصحيح حدا حصريا للانتهاء. يحتاج إنشاء الفاعل وملكية النتيجة والذاكرة المؤقتة وإنفاذ التخزين تحققا مستقلا مصرحا به.
إصلاح حد دورة الحياة وحفظ الاستخدام المشروع
طبق سياسة الاسترجاع المختارة عند الحد المشترك الموثوق، وراجع نقل سياق الوظيفة وافتراضات السلطة المخزنة. لا تعتبر تسمية مصدر يرسلها العميل أو اسم تخزين مبهم إذنا. افحص ألا ينشئ الرفض قدرة تنزيل أو إشعارا جديدا وفق العقد. إذا استخدم تفويض مقصود، فوثق نطاقه وعمره وإبطاله ودليل مراجعته بدلا من وراثة إذن الطلب بصمت. أدرج تنزيلا مشروعا لمنظم مسند كي لا ينجح إصلاح يرفض كل نتيجة.
تحقق من نجاح الإصلاح
افحص التسلسل الدقيق من الإنشاء إلى الاسترجاع ببيانات مختلقة في بيئة مكون معتمدة، مع إزالة الإسناد والورشة المختلفة وحد الانتهاء والنجاح المشروع. سجل الحالة المحمية والرد العام فعليا. وضح افتراضات الذاكرة المؤقتة والهوية. يفحص الشرط المحلي منطق السياسة فقط؛ ولم يشغل عاملا أو تخزينا أو تنزيلا أو آلية إبطال حقيقية.
امنع تكرار المشكلة
- حفز المراجعة الأمنية عند تحول الرد إلى ملف مخزن أو امتداد عمر السلطة بسبب سير العمل. اجمع متطلبات الحياة ونطاق النتيجة والتشخيص والانحدارات. أعد القرار عند تغير المستأجر أو حداثة الإسناد أو التفويض، واحفظ الحدود غير المحسومة في دليل الإصدار.