Next.js / المتقدم: أنماط المخبأ والدورة وأدلة الإصدار / الدرس 15
أمن Proxy وحدود الخارج الموثوقة
استخدم ميزات حد الشبكة لتوجيه محدود مع إبقاء المصادقة والتحقق وسلطة المصدر في الحد الخادمي الفعلي.
في هذه الصفحة
أهداف الدرس
- اشرح نطاق proxy.ts وحدود فحص الجلسة التقريبي.
- راجع عناوين الوجهة والبيانات الخاصة وCSP وحدود الرفع كعقود مستقلة.
ليست طبقة التوجيه الشبكي نظام التفويض كله
يستخدم Next 16 proxy.ts لحد الشبكة الذي عرف سابقاً بـmiddleware.ts. يحول أو يعيد المسار قبل العرض ولا يعوض matcher أو فحص تقريبي سياسة الكائن بالبيانات والكتابة. قد يختلف المسبق والمدخل البديل؛ لا تحم الفعل بافتراض مرور صفحة عبر Proxy. أبعد حالة الطلب عن العام والعمل المكلف غير المحدود هناك. سجل النسخة والنشر ولا تجعل التسمية برهان حمل لكل مشغل. تحتاج الخدمة تحققاً حالياً حتى لو كان غرض Proxy تحسين وصول غير مسجل إلى شاشة دخول، لا إصدار قرار العمل النهائي.
احفظ افتراض التوجيه العام في سجل قابل للمراجعة
JSON قائمة حدود اصطناعية لا ضبط Proxy مشغلاً. تؤكد سلطة البيانات والفعل وأصلاً مضبوطاً للتحويل. وجود ملف تلميح تنقل حتى يتحقق الاعتماد. يغطي matcher المقصود دون أصول أو طرق غير معنية ويختبر بعينات. لا تنسخ تحويلاً واسعاً يثق في next أوHost عشوائيين؛ بيانات الطلب ادعاء يحتاج حد الثقة المتحقق. لا يمنح السجل صلاحية أو يهيئ شبكة؛ يحدد لمن يراجع أين يجب البحث عن الفرض الحقيقي بدلاً من افتراض أن كل قرار توجيه مبكر قرار مصادقة كامل.
{"networkBoundary":"proxy.ts-versioned","coarseChecks":"navigation-only-until-credential-verified","authority":"data-layer-and-each-mutation","redirectOrigin":"trusted-configured-value","privateLogs":"no-tokens-or-payloads","runtime":"verify-platform-support"}
لا يطبق السجل matcher أو تحويلًا أو ترويسة أمن؛ يسمي ضوابط مستقلة للفحص.
تحتاج كل وجهة لاحقة عقدها الآمن
ليست السلسلة المحققة آمنة تلقائياً لـSQL أوHTML أوملف أوURL أوترويسة. استعمل ربط المصدر وترميز السياق ومعرف تخزين الخادم. قيد مخطط الجلب والوجهة والتحويل والبايت والموعد، وحد الرفع والأجزاء والمؤقت قبل النشر ونظف المرفوض. لا يوفر توجيه أو حزمة ترويسة الضمانات. راجع التنبيهات بإذن لا مسحاً حياً أثناء التأليف. يحفظ الفصل سبب كل تحقق؛ فقد يقبل النموذج عنواناً كنص وصف، ولا يسمح ذلك باستعمال النص نفسه كوجهة شبكة تملك سلطة الخادم للوصول إلى خدمات داخلية.
اعرض فئات الفشل الآمنة المقصودة فقط
يتعرف الموائم على فئة تحقق ويخفي المجهول، ويتجاهل status ورسالة خاصة في الكائن. يمكن للحقيقي أخطاء موثوقة أغنى ولا يسلسل المصدر للصفحة أو الفعل. لا يسجل النموذج أو يصادق أو يضبط CSP أو يشغل Proxy؛ يفحص شكل الإفصاح فقط. احفظ التفصيل بربط مضبوط وافصل الجسم الآمن عن إثبات عدم الكتابة. قد يحفظ المصدر تغييره ثم يرمي خطأ لاحقاً؛ لا يستطيع موائم يستقبل الاستثناء أن يستنتج وحده النتيجة التخزينية أو يقرر أن إعادة العملية آمنة.
function safeFailure(error) {
return error?.code === "INVALID_TITLE" ? {code:"INVALID_TITLE"} : {code:"INTERNAL_ERROR"};
}
console.assert(safeFailure({code:"INVALID_TITLE"}).code === "INVALID_TITLE");
console.assert(JSON.stringify(safeFailure({status:200,message:"private-source"})) === '{"code":"INTERNAL_ERROR"}');
تبقى فئة التحقق محددة ويخفى تفصيل المصدر دون اختبار حد Next أو رد HTTP.
راجع الترويسات وثقة المتصفح والنشر منفصلة
تحمي CSP والنوع وسمات الملف وCORS حدوداً مختلفة ولا تعوض الهوية والكائن. تحتاج nonce والتصيير الديناميكي دمجاً مختاراً ولا تخترع قيمة ثابتة كوصفة. تختلف قراءة المتصفح عن CSRF والأثر. راجع الصور البعيدة والبيئة العامة مع البيانات. يحلل المقرر القائمة وينفذ الموائم فقط دون شبكة أو ترويسة أو رفع أو تقييم موقع. يحتاج التحقق نسخاً وعينات وبيئة مأذونة. يوضح التقرير ما نفذ حتى لا يقرأ وجود قائمة دفاع متعددة البنود كدليل أنها طبقت واختبرت فعلياً في التطبيق.
الأخطاء الشائعة وإصلاحها
يعامل وجود ملف في Proxy كسلطة متحقق منها
- لماذا يحدث؟
- حل تلميح توجيه تقريبي محل بروتوكول المصادقة.
- كيف تصلحه؟
- تحقق من الاعتماد الحالي وافرض السياسة بالمدخل الفعلي.
- كيف تتجنب تكراره؟
- اختبر الأفعال والمعالجات المباشرة دون الاعتماد على مسار الصفحة.
يصبح حقل مقبول URL خارجية غير مقيدة
- لماذا يحدث؟
- افترض أن تحقق سياق واحد يناسب كل وجهة استخدام.
- كيف تصلحه؟
- طبق قواعد المخطط والوجهة والموارد الخاصة بالاستخدام.
- كيف تتجنب تكراره؟
- راجع التحويل وسياسة الوجهة المحلولة دون فحص أهداف حقيقية.
تسرب حالة الفعل استثناءات خاصة
- لماذا يحدث؟
- أعيدت كائنات المصدر الخام كأخطاء عامة.
- كيف تصلحه؟
- اختر الفئات الآمنة المعروفة واضبط الدليل الداخلي.
- كيف تتجنب تكراره؟
- أكد الحقول الدقيقة وغياب رسائل المصدر.
اختبر فهمك
1. هل تجعل Proxy مضبوطة فعلاً Server Action خاصة آمنة وحدها؟
اعرض الحل المشروح
لا. يبقى الفعل مدخلاً بإدخال غير موثوق وحالة كائن حالية. صادق وفوض فيه أو في عمليته المشتركة. تحسن Proxy التوجيه والقبول العام ولا تكون الحماية الوحيدة للمداخل الأخرى أو المسبق أو واجهة قديمة.
2. لماذا ليست safeFailure دليلاً على نشر آمن؟
اعرض الحل المشروح
تفحص ربط عينتين محليتين برمزين، ولا تختبر الهوية والتفويض والترويسات وCSP وربط المصدر وتغطية المسار والخطأ الفعلي. احفظ دليل الإفصاح الضيق وافحص كل حد حقيقي بالبيئة المأذونة المقصودة.
أهم ما تعلمته
- التوجيه الشبكي وسلطة المجال مسؤوليتان أمنيتان منفصلتان.
- تحتاج كل وجهة إدخال وكل نتيجة عامة عقداً مراجعاً خاصاً.