محتويات الدورة

تطوير البرمجيات الآمن / متوسط: حدود التنفيذ والتحقق / الدرس 10

تصميم واجهات هوية وصلاحية موثوقة

فصل إنشاء الهوية ونطاق المورد وسياسة الإجراء وإسقاط الاستجابة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • مراجعة الحد الذي يوفر حقائق الفاعل الموثوقة.
  • اختبار صلاحية الإجراء والحقول بمصفوفات علاقات مختلقة.

إنشاء سياق الفاعل قبل الثقة بسماته

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

التعبير عن الصلاحية بعلاقة وإجراء

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

python مصفوفة خيالية للإجراء والعلاقة
workshop = {"id":"w1", "tenant":"community-a", "organizers":{"o1"}}
def allowed(subject, item, action):
    return subject["active"] is True and subject["tenant"] == item["tenant"] and subject["id"] in item["organizers"] and action == "export-contacts"

owner = {"id":"o1", "tenant":"community-a", "active":True}
assert allowed(owner, workshop, "export-contacts") is True
assert allowed({**owner, "tenant":"community-b"}, workshop, "export-contacts") is False
assert allowed({**owner, "active":False}, workshop, "export-contacts") is False
assert allowed(owner, workshop, "cancel-registration") is False
print("four action-policy cases checked")
الناتج المتوقع
four action-policy cases checked

يقيم البرنامج الكامل قواميس تدريب موثوقة ولا يتحقق من اعتماد أو يستعلم إسنادا. تفحص أربع حالات الشرط فقط؛ ولا يتحقق الوسيط أو نطاق التخزين أو دورة الحياة.

إسقاط التمثيل المصرح به فقط

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

python فحص عرض ورشة بقائمة سماح
stored = {"id":"w1", "title":"Paper Gardens", "contactMarker":"lab-contact-only", "moderationNote":"lab-internal-only"}
public = {name: stored[name] for name in ("id", "title")}
assert set(public) == {"id", "title"}
assert "contactMarker" not in public
assert "moderationNote" not in public
print("public workshop fields checked")
الناتج المتوقع
public workshop fields checked

يفحص البرنامج المحلي الكامل تمثيلا عاما واحدا دون اتصال حقيقي. لا يثبت كل مسارات التسلسل أو رفض غير المخول؛ فتلك فحوص مستقلة عند حد التطبيق.

إعادة فحص السلطة عند تغير العلاقات

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

مراجعة مسارات الإنفاذ وآثار الرفض

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

الأخطاء الشائعة وإصلاحها

يمنح دور العميل وصول التصدير

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

يشمل العرض العام ملاحظات إشراف

لماذا يحدث؟
يتجاوز التسلسل الكامل العقد.
كيف تصلحه؟
ابن إسقاط الحقول بعد الصلاحية.
كيف تتجنب تكراره؟
اختبر غياب الخصائص المقيدة.

يبقى المنظم المحذوف ينزل النتائج

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

اختبر فهمك

1. نجحت مصفوفة السياسة المحلية. ماذا يفحص قبل ادعاء حماية التصدير الحقيقي؟

اعرض الحل المشروح

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

2. تضم القائمة ورشة المالك وورشة مستأجر آخر. لماذا قد ينجح اختبار الإدراج على نحو خاطئ؟

اعرض الحل المشروح

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

أهم ما تعلمته

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

المراجع الرسمية