الخلاصة

  • تبدأ مقاطع الاستمرار في RFC 2231 من الصفر وتتقدم بلا فجوات، ولا يظهر تعريف مجموعة المحارف واللغة الاختيارية إلا في مطلع أول مقطع مرمّز. ترتيب الأرقام هو الذي يحكم التجميع، لا موضع المعلمة في الرأس.
  • حتى filename السليم ليس إلا اقتراحاً ضمن Content-Disposition. يطلب RFC 2183 من المستقبل إسقاط المسارات، ومنع الكتابة فوق الملفات والوجهات الخطرة، وعدم تشغيل المحتوى بلا فعل صريح من المستخدم.

الرقم هو الترتيب

لنفترض، على سبيل الشرح لا النقل من رسالة تاريخية، أن رأساً يحمل:

filename*0*=utf-8'en'Quarterly%20; filename*1*=review%20; filename*2=final.pdf

هذه ليست ثلاثة أسماء. المقطع صفر يعلن UTF-8 ولغة اختيارية ويبدأ القيمة؛ المقطع واحد يواصلها ببايتات ممثلة بعلامات النسبة؛ والمقطع اثنان يتمها من دون علامة ترميز. إذا كانت السلسلة كاملة وغير ملتبسة تكون النتيجة المنطقية Quarterly review final.pdf.

لا يجوز للمستقبل الاعتماد على ترتيب الظهور. ترتيب معلمات MIME لا يحمل دلالة بذاته، وقد يصل *2 قبل *0. لذلك يشترط RFC 2231 البدء من صفر والزيادة واحداً واحداً، بلا أرقام مفقودة ولا أصفار بادئة. على المنفذ أن يجمع المقاطع ذات الاسم الأساس نفسه، وأن يكشف التكرار الملتبس، ثم يرتبها بحسب اللاحقة الرقمية.

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

تسلسل العمل الآمن يفصل الأسئلة: تحليل أسماء المعلمات؛ التحقق من سلسلة وحيدة متصلة؛ جمع الحمولة بحسب الرقم؛ تحويل ترميز النسبة إلى بايتات؛ تفسير المجموعة المعلنة مرة واحدة؛ ثم تسليم النص إلى سياسة مستقلة للتصرف في المحتوى. فقرة الأمن في RFC 2231 موجزة، لكن قواعد النحو والإعلان الوحيد في المقدمة تفرضان هذا الحد العملي.

الاستعادة لا تمنح إذن الحفظ

وسّع RFC 2231 طريقة تمثيل القيمة، ولم يمنح المرسل البعيد أمراً على نظام الملفات. كان RFC 2183، الذي يعرّف Content-Disposition، واضحاً: filename اسم مقترح لحفظ جزء منفصل من جسم الرسالة.

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

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

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

حدود التأليف لا تُركّب بالتخمين

يحمل RFC 2231 اسمي Ned Freed وKeith Moore. ويحمل سلفه RFC 2184 الاسمين نفسيهما. هذه هي حدود التأليف المشترك للآلية.

لـPatrik Fältström دور مهم في تاريخ تدويل الإنترنت، لكنه ليس مؤلف RFC 2231 ولا RFC 2184. أما RFC 3490 الخاص بالصيغة القديمة لـIDNA فيسمي Fältström مع Paul Hoffman وAdam Costello. جمع الأعمال المتجاورة في علاقة تأليف واحدة يفسد المصدر: قد تتقارب المسائل، لكن الوثيقة والمؤلفين ونطاق الاتفاق تبقى منفصلة.

يسجل IETF Datatracker مسيرة فريد الواسعة في البريد وأنواع الوسائط. ويروي Nathaniel Borenstein في تأبينه كيف التقت رغبته في بريد أغنى بتركيز فريد على المتانة والتشغيل البيني. ينظم RFC 2045 أجسام MIME، ويعالج RFC 2047 النص غير ASCII في الرؤوس، بينما يحل RFC 2231 المشكلة الأضيق لقيم المعلمات.

هذا التضييق حماية لا نقص. وجود نجمة في اسم حقل لا يمنحه تلقائياً دلالة RFC 2231؛ يجب أن تتبنى المواصفة المعنية القاعدة صراحة. كما أن نقل اسم دولي لا يحوله إلى ادعاء هوية.

أخذ HTTP الترميز وترك الاستمرار

استخدم RFC 8187 في HTTP شكلاً قريباً من المعلمة المرمزة، وفرض دعم UTF-8، لكنه استبعد مقاطع الاستمرار لأن HTTP لم يحتج إليها. بقي النسب التقني، وصغر العقد عمداً.

ويكرر RFC 6266 الحد نفسه في Content-Disposition الخاص بـHTTP: اسم الملف استشاري. يحذف المستقبل مكونات المسار، ويتحكم في الدليل، ويعالج الامتدادات الخطرة ومحارف التحكم والأسماء الخاصة. يمكن للخادم أن يقترح تسمية، ولا يمكنه أن يكتسب سلطة على ملفات العميل.

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

المصادر