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

أمان الويب / الأساسي: عقود الثقة والهوية في الويب / الدرس 5

التفويض ونطاق المورد الآمن للمستأجر

افرض الإذن بسياق فاعل ومورد موثوق قبل قراءة الحالة المحمية أو تعديلها.

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

أهداف الدرس

  • حدد فحوص الفاعل والمستأجر والمورد والفعل.
  • تحقق من الرفض وثبات الحالة مع الوصول الشرعي.

اكتب قاعدة الإذن قبل المسار

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

افحص النطاق والتكليف بنموذج محلي خالص

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

python قاعدة كاملة اصطناعية للمؤسسة والتكليف
def may_edit(subject, note):
    if not subject or not note or subject.get("validated") is not True:
        return False
    organization = subject.get("organization")
    subject_id = subject.get("id")
    if not isinstance(organization, str) or not organization or not isinstance(subject_id, str) or not subject_id:
        return False
    return (organization == note.get("organization")
            and subject.get("role") == "editor"
            and subject_id in note.get("assigned", []))

note = {"organization": "lab-org-a", "assigned": ["lab-user-a"]}
owner = {"validated": True, "organization": "lab-org-a", "role": "editor", "id": "lab-user-a"}
other = {**owner, "organization": "lab-org-b"}
assert may_edit(owner, note)
assert not may_edit(other, note)
assert not may_edit(None, note)
assert not may_edit({**owner, "organization": None}, {**note, "organization": None})

تمارس التحققات سماحاً وثلاثة مسارات رفض بحقائق مخترعة. يفترض ثبوت validated في موضع آخر؛ ليست الدالة وسيط مصادقة. لا تصل إلى بيانات محمية أو خدمة مهيأة.

افرض القاعدة بكل مسار للمورد

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

احفظ مجموعة حالات إذن صريحة

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

json مصفوفة تحقق تفويض خيالية
{
  "operation": "edit-assigned-note",
  "requiredCases": ["assigned-same-organization", "unassigned-same-organization", "different-organization", "missing-subject"],
  "denyInvariant": "no-record-job-or-notification-change",
  "ownerRole": "access-policy-maintainer",
  "environment": "synthetic-plan-only"
}

السجل خاص بالتطبيق، لا سياسة تنفيذية أو معرّف ضبط معياري. تحتاج كل حالة مسماة دليلاً من حد التنفيذ الملائم، بما فيه ثبات الحالة عند الرفض.

أعد تقييم الإذن بعد تغير الهوية والمورد

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

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

يصير معرّف مؤسسة العميل سلطة

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

يجدول الطلب المرفوض مهمة

لماذا يحدث؟
قُيّم الإذن بعد الأثر.
كيف تصلحه؟
افرض قبل التعديل واحفظ الذرية.
كيف تتجنب تكراره؟
افحص الحالة اللاحقة عند الرفض.

يعطي المخبأ خاص مستخدم لآخر

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

اختبر فهمك

1. لماذا تختبر المؤسسة الخاطئة وغياب التكليف؟

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

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

2. يفقد محرر تكليفه بجلسة نشطة. ماذا تعالج السياسة؟

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

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

أهم ما تعلمته

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

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