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

Express.js / المتقدم: عقود الموارد والكتابة والإصدار / الدرس 15

الرفع والإدخال الخارجي والمراجعة الأمنية

صمم استقبال ملفات محدوداً واستعمالاً آمناً لاحقاً دون الثقة بالأسماء والأنواع أو عناوين الوجهة.

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

أهداف الدرس

  • افصل حدود النقل وفحص الملف وهوية التخزين والنشر.
  • راجع حدود URL الخارجي وإفصاح الخطأ دون فحوص مسح.

تحليل الأجزاء ليس ضمان أمان مضمنًا

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

اكتب سياسة الاستقبال قبل اختيار الوسيط

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

json سجل سياسة رفع اصطناعي
{"intake":"synthetic-only","storage":"private-quarantine","storageKey":"server-generated","originalName":"metadata-only","limits":["bytes","parts","fields","temporary-space"],"publication":"after-authorized-review"}

يسمي الحدود ولا يغير محللاً أو تخزيناً أو إعداد نشر، ولا يدعي قبول ملف.

عنوان URL طلب قدرة آخر

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

تحقق من فئة العمل المعلنة دون ادعاء سلامة الملف

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

javascript شرط بيانات وصفية محلي كامل
function importMetadata(category,rows) {
  return ["course-labels","course-tags"].includes(category) &&
    Number.isInteger(rows) && rows >= 1 && rows <= 100;
}
console.assert(importMetadata("course-tags",100));
console.assert(!importMetadata("private-accounts",1));
console.assert(!importMetadata("course-tags",101));

تنجح الفئة المعتمدة ضمن الحد فقط. لا يفحص بايت ملف أو محللاً أو وجهة شبكة.

راجع سلسلة الإدخال غير الموثوق كاملة

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

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

يحدد اسم الملف مسار تخزين عاماً

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

يسمى وصف MIME سلامة ملف متحققاً منها

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

يصل مستورد URL لوجهات غير مقصودة

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

اختبر فهمك

1. لماذا لا يصادق شرط البيانات الوصفية ملفاً مرفوعاً؟

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

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

2. لماذا يكون تنظيف المساحة المؤقتة ضمن اختبار الرفض؟

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

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

أهم ما تعلمته

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

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