ما أحرف غير مسموح في بروتوكول نقل الملفات حذف القيادة؟

StackOverflow https://stackoverflow.com/questions/404175

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا ftp'ing الملفات من خادم خارجي، ثم حذفها على خادم خارجي، وملف واحد فشل لأنه لم يكن هناك مسافة في اسم الملف. لقد غيرت بلدي بروتوكول نقل الملفات حذف الأوامر لديك علامات الاقتباس حول اسم الملف.

ftpStream.WriteLine("delete """ & FileToDelete & """")

ولكن، هل هناك شخصيات أخرى التي قد يستخدمها المستخدم في إنشاء اسم الملف، وأن برنامجي لا تزال خنق على؟ ليس لدي أي سيطرة ما هي تلك أسماء قد يكون.

و(أضع علامة من مباحث أمن الدولة و SQL Server، لأنني خلق مهمة بروتوكول نقل الملفات على الطاير، من Pakcage ومباحث أمن الدولة. OS على كلا الجانبين لفوز XP)

هل كانت مفيدة؟

المحلول

ولن يسمح أي الأحرف التي محجوزة من قبل نظام الملفات. هذا عادة ما يتضمن المساحات، الفواصل، مائلة، كولون، علامات quetion، التنصيص، وما إلى ذلك ولكن كما ذكر JaredPar، الفضاء وربما كان الجاني العالمي الوحيد لأن كل نظام الملفات لديها مجموعة من الأحرف المحجوزة التي لا تتداخل دائما.

وعلى فكرة جيدة لURL ترميز أي بروتوكول نقل الملفات أو HTTP المسارات. هذا سيتم تحويل مساحات إلى٪ 20 والتي عادة ما ينبغي أن يكون مفهوما من قبل ملقم بروتوكول نقل الملفات.

نصائح أخرى

وانظر القسم 5.3 من FTP RFC (RFC 959) . ليس هناك في الواقع أي أحرف غير قانونية، وغيرها من CRLF، غير قانونية كجزء من اسم الملف.

والمشكلة هي معرفة ما الأحرف الملقم الوجهة سوف خنق على مقابل الأحرف FTP غير المشروعة. انا التخمين أنه إلى جانب الفضاء، ليس هناك الكثير من الشخصيات التي سوف تسبب problem.s لكنني لست خبيرا FTP.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top