PDA

View Full Version : سوال: كنترل دسترسي كاربران سايت به محتواي پوشه اي خاص



behnet
چهارشنبه 30 بهمن 1387, 08:40 صبح
سلام دوستان خوبين؟

ببينين فرض كنيم1 پوشه روي دايركتوري سايت داريم كه حاوي اسناد محرمانه است و قرار فقط افراد خاصي به محتواي اون دسترسي داشته باشن

سوالم اينه كه چجوري ميشه كاري كرد كه كنترل دسترسي به فايلهاي داخل پوشه صورت گيرد؟

مثلا چكار كنيم كه كاربران از طريق تغيير url نتونن به فايلها دسترسي داشته باشن ؛ و اگه هم قراره دسترسي داشته باشن حتما از طريق صفحات aspx پروژم اين كار صورت گيرد ؟

ممنون

milade
چهارشنبه 30 بهمن 1387, 12:51 عصر
سلام علیکم .
میبایست با کلاسهای HtppHanders کار کنید
این مقاله رو ببینید :

http://www.persiadevelopers.com/articles/file-security.aspx
اگه راهنمایی بیشتری خواستید در سایت جستجو کرده و در صورت نرسید به جواب مطرح کنید
موفق باشید

behnet
پنج شنبه 01 اسفند 1387, 08:48 صبح
ممنون از جواب شما
اما دقيقا نفهميدم بايد چه كنم

من ميخوام يك پوشه اي كه حاوي مثلا يك سري فايل pdf هست رو محافظت كنم...

اگه ميشه يكم توضيح بدين.ممنون

milade
پنج شنبه 01 اسفند 1387, 10:53 صبح
سلام علیکم .ببینید دوست عزیز شما نمیتونید تا ابد این فایلها رو مخفی کنید . یا اینکه همیشه Url رو عوض کنید .اما با هندل کردن یه فایل ، وقتی یه درخواست داده میشه IIS چک میکنه ، ببینه شما برا اون فرمت چه دستوری دادید . مثلا گفتید اگه PDF بود برو سراغ Asp.Net .خوب برنامه میاد و روی سایت شما چک میکنه ، میگه مثلا اگه کاربر عضو بود اجازه دانلود داره .اما اگه نبود خطای دلخواه رو بده !همین . مقاله رو بخون ، یه سرچ کن انشالله که روال میاد دستت .موفق باشی

babakj
دوشنبه 05 اسفند 1387, 12:50 عصر
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</configuration>



این کد ها توی یک فایل Web.Config بذار و کپی کن توی همون فولدری که می خوایی محافظت بشه
در این حالت هیچ کاربری نمی تونه به اون فولدر دسترسی داشته باشه

frozen
دوشنبه 05 اسفند 1387, 20:46 عصر
من به صورت تجربی یه را ساده تر پیدا کردم که در اصل همون راهی که babakj توضیح داده فقط دیگه دستی این کارو انجام نمیدی.
توی ویژوال استودیو سمت راست قسمت بالا یک دکمه هست به اسم AdministerWebsite
اول باید رل ها و کاربر ها رو توی قسمت Security درست کنی.
تا چند دقیقه دیگه کامشو به صورت تصویری میذارم.

Neo Persian
دوشنبه 05 اسفند 1387, 21:27 عصر
راه حل هايي كه ارائه شد موقعي جواب ميدن كه فايل درخواست شده به aspnet_isapi فرستاده بشه يعني در IIS تعريف شده باشه كه IIS به درخواست اين فايل مستقيم جواب نده و اونو به موتور ASP بفرسته در اين صورت authorization اتفاق ميافته
براي اين كار هم نياز به سرور اختصاصي هست!

babakj
سه شنبه 06 اسفند 1387, 17:09 عصر
راه حل هايي كه ارائه شد موقعي جواب ميدن كه فايل درخواست شده به aspnet_isapi فرستاده بشه يعني در IIS تعريف شده باشه كه IIS به درخواست اين فايل مستقيم جواب نده و اونو به موتور ASP بفرسته در اين صورت authorization اتفاق ميافته
براي اين كار هم نياز به سرور اختصاصي هست!

شما امتحان کردی این کارو خودت

هیج نیازی به سرور اختصاصی نیست الکی از خودت نظر نپرون

----------------------
شما می تونی فایل PDF یا هر فایلی رو که عشقت میکشه بذاری داخل فولدری که اون کد ها رو در یک فایل web.config ذخیره کری
موقعی هم که خواستی یک فایل رو برای یک user سرو کنی با استفاده از
System.io فایل رو می خونی و اجازه می دی که کاربر دانلود کنه

برای Authentication کردن یک کاربر هم می تونی از جدول خودت که کاربرات توش تعریف کردی استفاده کنی - فراموش نکن که ASP.net از Authentication anonymous استفاده نمی کنه

milade
سه شنبه 06 اسفند 1387, 18:12 عصر
برای راه حلی که من ارایه دادم اگه سرور باهاتون راه نیاد انتظار میره سرور اختصاصی بخواید !
موفق باشید

m.hamidreza
سه شنبه 06 اسفند 1387, 21:14 عصر
هیج نیازی به سرور اختصاصی نیست الکی از خودت نظر نپرون


منظور دوستمون بیشتر روی مدیریت نوعی خاص از "فایل ها" بود.
بعنوان مثال من نمیخوام کل فایل های pdf ای که تو پوشه ی پروژم هست قابل دانلود باشه....

Neo Persian
سه شنبه 06 اسفند 1387, 21:18 عصر
شما امتحان کردی این کارو خودت

هیج نیازی به سرور اختصاصی نیست الکی از خودت نظر نپرون

----------------------
شما می تونی فایل PDF یا هر فایلی رو که عشقت میکشه بذاری داخل فولدری که اون کد ها رو در یک فایل web.config ذخیره کری
موقعی هم که خواستی یک فایل رو برای یک user سرو کنی با استفاده از
System.io فایل رو می خونی و اجازه می دی که کاربر دانلود کنه

برای Authentication کردن یک کاربر هم می تونی از جدول خودت که کاربرات توش تعریف کردی استفاده کنی - فراموش نکن که ASP.net از Authentication anonymous استفاده نمی کنه
بله من خودم امتحان كردم كه ميگم!

در ضمن هر كي اينجا نظر خودشو ميتونه بگه!

iman_ad
چهارشنبه 07 اسفند 1387, 02:04 صبح
بله ولی اگه لینک مستقیم فایل بدی هر کسی می تونه دانلود کنه چون iis فایل رو ASP.NET ISAPI extension مپ نمی کنه

babakj
پنج شنبه 08 اسفند 1387, 21:28 عصر
شما می خواهید PDF سرو نشه
خوب PDF رو می ریزی توی یک فولدر - دیگه توی اون فولدر هیچی نمی ریزی

مثل اینکه لذت می برید از اینکه خودتون رو می پیچونید و نمی خواهید مسئله رو حل شده تلقی کنید .

اصلا می دونی چیه آره نمیشه باید برید پول بدید سرور اختصاصی
از کلاس Http Handlers هم استفاده کنید - 50 ساعت هم کد نویسی کنید
چون دوست ندارید راه کوتاه رو انتخاب کنید

babakj
پنج شنبه 08 اسفند 1387, 21:36 عصر
بله ولی اگه لینک مستقیم فایل بدی هر کسی می تونه دانلود کنه چون iis فایل رو ASP.NET ISAPI extension مپ نمی کنه

نابغه پاشو برو این فایل رو دانلود کن ببینم
http://www.itanc.com/secure/test.pdf


اسم فایل هم هر چی دلت می خواد بزن - بازم نمی آره

Neo Persian
جمعه 09 اسفند 1387, 12:13 عصر
نابغه پاشو برو این فایل رو دانلود کن ببینم
http://www.itanc.com/secure/test.pdf


اسم فایل هم هر چی دلت می خواد بزن - بازم نمی آره
ايني كه شما گذاشتي از امكانات Webserver هست كه درون كنترل پنل هر وب سروري هست و هيچ ارتباطي به ASP نداره

اگه من و دوستان اشتباه ميكنيم يك sample از اين application كه به اين صورت از فايل ها محافظت ميكنه اينجا بزاريد تا هم ما به اشتباهمون پي ببريم هم يه چيزي ياد بگيريم!

dina123
شنبه 10 اسفند 1387, 18:57 عصر
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</configuration>

این کد ها توی یک فایل Web.Config بذار و کپی کن توی همون فولدری که می خوایی محافظت بشه
در این حالت هیچ کاربری نمی تونه به اون فولدر دسترسی داشته باشه


منظورتون اینه که همین Web.Config رو بذاریم توی فولدری که می خوایم محافظت بشه؟
یعنی فایل هایی رو که می خواهیم محافظت کنیم بریزیم تو یه فولدر و Web.Config اون رو این طوری تغییر بدیم؟ مگه یه Web.Config کلی برای سایت وجود نداره یا هر فولدری میتونه Web.Config جدا داشته باشه؟

iman_ad
شنبه 10 اسفند 1387, 19:45 عصر
هدف این انجمن آموزش پس بهتره احترام همدیگرو نگه داریم!!!
حرف شما کاملا متین دوست من system.WebServer در iis7 اضافه شده و کاری که قبلا با mapping در iis6 انجام می شد می شه با web.config انجام داد.



This topic describes how to move a Web application from Internet Information Services (IIS) 6.0 to IIS 7.0. Web applications in IIS 7.0 can be configured to use either Classic mode or Integrated mode. Classic mode maintains backward compatibility with earlier versions of IIS by using an ISAPI extension to invoke the ASP.NET runtime. This option usually requires few or no modifications to existing applications.
IIS 7.0 Integrated mode is a unified request-processing pipeline that combines the ASP.NET request pipeline with the IIS core request pipeline. The integrated pipeline provides improved performance, provides modularity for configuration and administration, and adds flexibility for extending IIS with managed-code modules. For example, you can define a managed-code module in the App_Code folder of the Web application and register it to apply to all IIS requests, which includes requests for static files.