Express.js / المتقدم: عقود الموارد والكتابة والإصدار / الدرس 13
ثقة الوكيل وهوية العميل وقبول العمل
فسر البيانات المحالة ضمن بنية وكيل متحقق منها، واربط قبول العمل بهوية موثوقة.
في هذه الصفحة
أهداف الدرس
- اشرح أثر trust proxy في تفسير العنوان والبروتوكول والمضيف.
- افصل قبول الطلب والمصادقة وحدود موارد المجال.
تحمل الترويسات المحالة ادعاءات لا حقيقة ذاتية
قد ينهي الوكيل TLS ويمرر الطلب إلى Express باتصال داخلي مختلف. يحتاج التطبيق حينئذ سياسة trust proxy مراجعة لتفسير عنوان العميل أو البروتوكول الأصلي. يعتمد الضبط الصحيح على البنية التي يمكن الوصول عبرها فعلياً وكيف يستبدل الوكيل الموثوق الترويسات المحالة. قد يجعل التوسع دون معرفة ادعاءات المهاجم مؤثرة. وثق كل طريق دخول مسموح، بما فيه طريق أقصر يتجاوز انتقالاً متوقعاً. وقد يكون عدد الانتقالات غير آمن إذا اختلفت أطوال الطرق ولم تفرض البنية الافتراض. هذه حدود ثقة تشغيلية وليست مجرد إصلاح قيمة عنوان خاطئة.
سجل افتراضات البنية قبل ضبط الثقة
تمثل JSON سجل مراجعة اصطناعياً لا ضبط وكيل قابلاً للتنفيذ. تطلب تحديد مدخل الثقة وإعادة كتابة الترويسات ومنع التجاوز. تحقق من req.ip وreq.protocol وreq.hostname وسلوك الملف الآمن عبر الطريق المقصود بطلب اصطناعي مأذون قبل اعتماد السياسة. لا تستخدم مضيفاً محالاً دون تحقق لبناء رابط استرداد أو إعادة توجيه عامة. وحتى عنوان صحيح ليس حساب مستخدم أو شخصاً فريداً ثابتاً؛ تحد الشبكات المشتركة وتغير العنوان مما تثبته قرارات IP. لا يهيئ السجل شبكة أو يمنح مصدراً حق الاتصال.
{"environment":"synthetic-topology-review","ingress":"approved-proxy-only","forwardedHeaders":"overwrite-at-trusted-boundary","directBypass":"must-be-prevented","checks":["client-ip","original-protocol","approved-host","secure-cookie"]}
يسمي السجل الأدلة المطلوبة قبل اختيار trust proxy، ولا يطبق إعداد تطبيق أو شبكة.
وازن حجم الإدخال والعمل المتزامن وطلب الهوية
تعد حدود المعدل أحداثاً في نافذة، وتقيد حدود التزامن العمل النشط، وحدود الحمولة الإدخال الواحد. لا يستبدل أيها تفويض الكائن أو موعد المصدر. اختر أبعاد الهوية من سياق متحقق وراع مشاركة العناوين قبل منع مستخدمي شبكة كاملة. لا يمثل عداد عملية محلي ميزانية مشتركة بين عدة عمال. حدد المخزن والفشل والانتهاء والتحديث الذري لأي محدد موزع. لا تعرض رقماً ثابتاً للطلبات بالدقيقة كحد آمن لكل العناوين متفاوتة الكلفة؛ فطلب تصدير كبير ليس قراءة بطاقة صغيرة رغم اشتراكهما في عنوان تطبيق واحد.
نمذج قرار قبول محدوداً
تقبل الدالة المحلية العمل فقط عند تحقق حد العمل النشط وحد عناصر العملية معاً. الأرقام اصطناعية لتعليم الفرق وليست توصية إنتاج. يحتاج المحدد الحقيقي حجزاً وتحريراً ذريين وتنظيف الإلغاء ومفتاح هوية موثوقاً؛ لا ينفذ الشرط ذلك. لكنه يوضح أن حمولة صغيرة قد ترفض عند امتلاء العمل، وأن مكاناً حراً لا يسمح بطلب ضخم. افصل رد رفض القبول عن فشل المصدر الداخلي كي يتبع العميل سياسة الإعادة المقصودة، ولا يصبح تكرار الطلب فوراً وسيلة لمضاعفة الضغط.
function admit(active,items) {return active < 3 && items <= 20;}
console.assert(admit(2,20));
console.assert(!admit(3,1));
console.assert(!admit(0,21));
يقبل الأول، ويمنع امتلاء العمل وزيادة العناصر كل منهما مستقلاً دون مخزن معدل.
تحقق من الحد دون توسيع الوصول
استخدم سجلات بنية معتمدة واختبارات معزولة لمقارنة الادعاءات المباشرة والمحالة. أصلح سياسة الانتقال أو إعادة الكتابة بدلاً من الثقة بكل القيم لإسكات عرض. تحقق من الملفات الآمنة والروابط والمضيف وهوية المحدد معاً بعد التغيير، وراقب الرفض المشروع والتنظيف قبل رفع الميزانية. لا يغير المقرر وكيلاً ولا يرسل حركة شبكة أو يشغل محدداً موزعاً؛ يفحص الشرط ويحلل القائمة فقط. تبقى صحة فرض القبول والبنية مسؤوليتين خاصتين بالنشر وتتطلبان دليلاً يتجاوز نجاح النموذج.
الأخطاء الشائعة وإصلاحها
يبدو أن كل مستدع يختار عنوانه
- لماذا يحدث؟
- وثقت ادعاءات الإحالة عبر حد غير مضبوط.
- كيف تصلحه؟
- طابق الثقة مع المدخل وإعادة الكتابة المتحققين.
- كيف تتجنب تكراره؟
- اختبر كل الطرق وافتراضات التجاوز.
يسمح كل عامل بحصة عالمية مستقلة
- لماذا يحدث؟
- سمي عداد محلي حداً موزعاً.
- كيف تصلحه؟
- استخدم سياسة مشتركة ذرية حين تلزم الميزانية العامة.
- كيف تتجنب تكراره؟
- وثق فشل المخزن وسلوك العمال.
تمنع شبكة مشتركة كمستخدم مسيء واحد
- لماذا يحدث؟
- عومل IP كهوية مصادق عليها فريدة.
- كيف تصلحه؟
- راجع أبعاد الهوية والشبكة معاً.
- كيف تتجنب تكراره؟
- اختبر مشاركة العنوان المشروعة.
اختبر فهمك
1. لماذا قد يفشل عدد الانتقالات مع طريق بديل أقصر؟
اعرض الحل المشروح
قد يصبح المستدعي أقرب من حد الثقة المفترض فتتغير القيم المقبولة. لا يصح الإعداد إلا ببنية تفرض الافتراض. راجع كل مداخل وإعادة كتابة الوكيل، ولا تستنتج السلامة من الطريق المعتاد وحده.
2. هل تنفذ admit محدداً عاماً آمناً؟
اعرض الحل المشروح
لا؛ تفحص حدين لأعداد مقدمة ولا تحجز ذرياً أو تتحقق من هوية أو تخزن أو تحرر أو تنهي. هذه مسائل دمج لازمة. يميز النموذج الأبعاد ولا يصادق فرضاً موزعاً.
أهم ما تعلمته
- توثق بيانات الوكيل ضمن بنية متحقق منها فقط.
- يحل المعدل والتزامن وحد الإدخال والتفويض مشكلات مختلفة.