PDA

View Full Version : سوال: برسی ContentType یا Regex



fakhravari
دوشنبه 22 آبان 1391, 13:25 عصر
با سلام
برای برسی نوع فایل ها کدوم روش بهتر عمل می کند؟

fakhravari
سه شنبه 23 آبان 1391, 21:10 عصر
دوستان نظری نیست؟

dorparasti
سه شنبه 23 آبان 1391, 23:44 عصر
دو مسئله رو باید در این زمینه مورد توجه قرار داد :

1- با هیچکدوم از این روش ها نمی تونید مطمئن باشید که فایل ارسال شده به طور حتم همون فرمت مورد نظر شما رو داره . تنها راه برای اینکار استفاده از parser های مخصوص هرکدوم هست که عملی نیست .

2- دوم و مهمتر این که اصلا مهم نیست که فایل آپلود شده برای مثال واقعا jpg است یا نه . مسئله اصلی اینه که اجازه اجرا شدن فایل های نامناسب رو ندیم .
برای این کار :


بررسی پسوند کفایت می کنه چون حتی اگر کاربر یک فایل aspx رو با تغییر پسوند به file.aspx.jpg تغییر بده هرچند از فیلتر شما عبور می کنه اما دیگه امکان اجرا شدن از طریق فراخوانی اون از طریق مرورگر رو نداره .
طرز استفاده از فایل های آپلود شده رو تغییر بدید . فایل های آپلودی رو در پوشه App_Data ذخیره کنید که یک پوشه محافظت شده است و از طریق مرورگر قابل دستیابی نیست و برای فراخوانی این فایل ها از یک handler استفاده کنید یعنی در صفحه ها مستقیما به فایل ارجاع ندید بلکه به یک هندلر ارجاع بدید که اون فایل رو از پوشه می خونه و به درخواست کننده می فرسته .

برای مطالعه بیشتر این دو پست عالی از جناب نصیری رو ببینید

+ باگ Directory Traversal در سایت (http://www.dotnettips.info/Post/960)
+ محدود کردن کاربر‌ها به آپلود فایل‌هایی خاص در ASP.NET MVC (http://www.dotnettips.info/Post/920/%D9%85%D8%AD%D8%AF%D9%88%D8%AF-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%E2%80%8C%D9%87%D8%A 7-%D8%A8%D9%87-%D8%A2%D9%BE%D9%84%D9%88%D8%AF-%D9%81%D8%A7%DB%8C%D9%84%E2%80%8C%D9%87%D8%A7%DB%8 C%DB%8C-%D8%AE%D8%A7%D8%B5-%D8%AF%D8%B1-asp-net-mvc)

fakhravari
چهارشنبه 24 آبان 1391, 02:16 صبح
ممنون از اقای زاعری
یکی از مشکلات سایت dotnettips این است که نمونه ای بعد اتمام مقالات خودشون نمیزارن

dorparasti
چهارشنبه 24 آبان 1391, 02:28 صبح
با نظرتون موافق نیستم . چون هرجا که نیاز بوده ( برای مثال در آموزش تکنولوژی های جدید ) هم در متن و هم به صورت قابل دانلود کدها ارائه شده اند .

در موارد دیگه هم من این رو یک اشکال نمی دونم . همیشه لازم نیست کد آماده ای وجود داشته باشه . تنها توضیح و بررسی دقیق مسئله کفایت می کنه ( که اینکارو هم انصافا خیلی خوب انجام میدن ) و در صورت نیاز لینک به توضیحات بیشتر یا مستندات . دیگه وظیفه خود خواننده است که وقت بزاره و بر اساس نیاز خودش موارد لازم رو جمع آوری بکنه .