اعمال محدوديت دسترسي براي فايل ها

mehrabadi

Member
سلام
همونطور كه مي دونيد توي دات نت 2 مي‌شه براي پوشه ها مجوز دسترسي گذاشت كه اگه مثلا فرد ناشناسي Ananymouse
خواست وارد بشه به صفحه ي لاگين هدايت بشه.
حالا سوال من اينه كه آيا ميشه براي فايل هايي به جز فايل هاي ASPX هم اين محدوديت رو قائل شد. مثلا فايل هاي اكسل يا ورد رو هم با اين روش محدود كرد ؟به صورت پيش فرض اين امكان وجود نداره.
با تشكر
 

mazoolagh

Active Member
از طریق iis که مطمئنا میشه - ولی اگر جایی هاست باشین نمیتونین از این روش استفاده کنین.

اما اگر فایلهاتون رو بعنوان Resource ذخیره کنین فکر کنم به خواسته تون برسین
 

mehrabadi

Member
خیلی ممنون از پاسخ شما
منظور شما از resource اینه که اول یه فایل دات نت بسازم بعد از توی اون به فایل اصلی redirect کنم ؟ اگه این منظور نیسا لطفا توضیح بیشتری بفرمایید.
 

yasak

Member
سلام،
برای حفاظت از فایل های access، هاست ها معمولا یه فولدر به نام db دارن که از طریق HTTP قابل دسترسی نیست، اما از داخل کد می شه به بانک اطلاعاتی موجود در این فولدر دسترسی پیدا کرد. در نتیجه کسی نمی تونه با حدس زدن اسم فایل اون download کنه.

به غیر از روش که دوستمون گفت (استفاده از IIS)، احتمالا می شه با روش Url-Rewrite هم از فایل ها محافظت کرد. البته مطمئن نیستم. اگه شد خبرش رو حتما اینجا بنویس.

این هم آدرس یه مقاله که استفاده از Url Rewriting رو توی دان نت توضیح می ده:
http://www.codeproject.com/aspnet/URLRewriter.asp
 

mehrabadi

Member
خیلی ممنونم دوست عزیز
فکر کنم نتونستم سوالم رو خوب مطرح کنم. ببینید فرض کنید من یه سایت دارم که توش پر از فایل های پی دی اف هست. و همه ی این فایل ها دارای لینک مستقیم هستند و به هر دلیل قابلبیت تعویص این لینک ها رو ندارم . از طرفی نمی خوام که از اول این لینک ها رو درون یه فایل دات نت بذارم و سپس از اون ریدارکت بگیرم .
حالامن می خوام بدونم بدون تغییر خاصی مثلا فقط با تغییر در ئب کانفیگ می شه کاری کرد که فایل ها با لینک مستقیم پسور بخان؟

ممنون از همه دوستان عزیز و استاید محترم سایت وزین مجید آنلاین
 

mazoolagh

Active Member
خیلی ممنون از پاسخ شما
منظور شما از resource اینه که اول یه فایل دات نت بسازم بعد از توی اون به فایل اصلی redirect کنم ؟ اگه این منظور نیسا لطفا توضیح بیشتری بفرمایید.

منطورم این هست که شما میتونین کاری کنین که فایل شما مثل یک resource بنظر بیاد. در اینصورت میتونین توی web config برای فولدر فایلهاتون security بگذارین و چون خود موتور دات نت این نوع فایلها رو بررسی میکنه مشکل شما حل میشه. مثلا" فایل file1.pdf چون توسط خود دات نت بررسی نمیشه سکوریتی فولدر روش اعمال نمیشه ولی اگر اون رو به file1.pdf.resx یا file1.pdf.config و ... (پسوندهایی که مستقیما توسط خود موتور دات نت بررسی میشن) rename کنین دیگه کسی نمیتونه دسترسی مستقیم بهش داشته باشه.
حالا کافی هست تو web.config برای فولدر(های) مورد نظر دسترسی همه رو deny کنین بعد با یک کد ساده فایل درخواستی رو (مسلما" پس چک کردن اجازه دسترسی) اول به اسمش یک (مثلا) resx. اضافه میکنین تا اسم فایل واقعی بدست بیاد و بعد محتوای اون رو برای کاربر بصورت یک فایل میفرستین.
 

yasak

Member
سلام،

حالامن می خوام بدونم بدون تغییر خاصی مثلا فقط با تغییر در ئب کانفیگ می شه کاری کرد که فایل ها با لینک مستقیم پسور بخان؟

راه حل همون هست که دوستمون گفت و یا شاید ساده تر این باشه که:
1- فایل های PDF رو بذار داخل یه فولدر که از طریق HTTP قابل دسترسی نباشه. معمولا هاست ها فولدر DB که قبل از wwwroot هست رو برای این کار در نظر می گیرین.
2- یه صفحه دات نت درست کن که در صورتی که کاربر login کرده بود با استفاده از متد Response.WriteFile فایل PDF رو از داخل فولدر DB بخونه و نشون بده.

البته اگه حجم PDF ها بالاست (مثلا بالای 50 مگابایت) دات نت در متد Response.WriteFile مشکل داره و ممکن خیلی کند اینکارو انجام بده. در این صورت باید از روش دیگه به جای Response.WriteFile برای خواندن و نمایش فایل استفاده کنی.
 

جدیدترین ارسال ها

بالا