PDA

View Full Version : دسترسی کاربران به فایلها



Behrouz1985
پنج شنبه 22 مهر 1389, 11:48 صبح
برای جلوگیری از دسترسی کاربران به فایلهایی که روی سرور قرار داره و هر کاربری به یکسری از فایلها باید دسترسی داشته باشه، چی کار باید کرد؟
منظورم اینه که اگه کاربر آدرس فایلو بدست بیاره و توی آدرس بار بنویسه، چطوری باید جلوشو گرفت؟!
آیا با beginrequst میشه اینکارو انجام داد؟ اگه کسی توضیح بده ممنون می شم.

Peyman.Gh
پنج شنبه 22 مهر 1389, 12:08 عصر
پسوند فایل ها را تغییر دهید و در هنگام نیاز به حالت قبلی برگردانید.

raziee
پنج شنبه 22 مهر 1389, 12:16 عصر
برای جلوگیری از دسترسی کاربران به فایلهایی که روی سرور قرار داره و هر کاربری به یکسری از فایلها باید دسترسی داشته باشه، چی کار باید کرد؟
منظورم اینه که اگه کاربر آدرس فایلو بدست بیاره و توی آدرس بار بنویسه، چطوری باید جلوشو گرفت؟!
آیا با beginrequst میشه اینکارو انجام داد؟ اگه کسی توضیح بده ممنون می شم.

اگه این فایل هایی که میگید برای دانلود باشن کار خیلی راحت هست.
شما یک Handler مینویسید و نام اون فایل رو بوسیله ی QueryString معرفی میکنید.
در اون Handler چک میکنید که آیا کاربر معتبر هست یا نه.
(علاوه بر این اینجوری آدرس فایل رو هم به کاربر نمیدید.)

اما اگه منظورتون از دسترسی نمایش صفحات هست :
اگه کاربران خاص هستند میتونید اون کاربران خاص رو در وب کانفیگ بنویسید.
اگه کاربران جزء گروه خاصی هستند میتونید این گروه رو در وب کانفیگ معرفی کنید.

اما اگه تعداد کاربران زیاد هست و به هر کدوم یکسری صفحه میدید ، میونید در رویداد BeginRequest چک کنید که کاربر درخواست کننده معتبر هست یا نه.

Behrouz1985
پنج شنبه 22 مهر 1389, 12:30 عصر
ببینید دوستان، من می خوام برای هر کاربری یه کارتابل درست کنم که هر کدوم بتونن فایلهایی رو که می خوان برای مدیر سایت بفرستن که توی کارتابل اون بیاد و هر کاربری بتونه فایلهای مربوط به خودش رو داخل کارتابلش بینه. تعداد کاربرای سایت هم خیلی زیاد نیست.
ولی بخاطر مسایل امنیتی نمی خوام هیچ کس دیگه ای به جز کاربر مربوطه، فایلهاشو ببینه.

Peyman.Gh
پنج شنبه 22 مهر 1389, 13:05 عصر
شما می توانید یک فایل را Attached کنید بطوری که کاربر متوجه مسیر این فایل نمی شود.
برای امنیت فایل ها پسوند فایل ها را تغییر دهید و برای دانلود آن را با پسوند اصلی برای کاربر ارسال کنید.

برای مثال ما پسوند یک فایل متنی را به ascx تغییر داده ایم این پسوند برای IIS شناخته شده است و کاربر با وارد کردن آدرس این فایل نمی تواند محتویات فایل متنی را مشاهده کند.
اگر بخواهیم این فایل را برای سیستم کاربر ارسال کنیم به این صورت عمل می کنیم :


protected void Button1_Click1(object sender, EventArgs e)
{
Response.AppendHeader("content-disposition","attachment; filename=Test.txt");
Response.TransmitFile(Server.MapPath("Test.ascx"));
Response.End();
}

فایل با پسوند ascx برای سیستم کاربر با پسوند اصلی خود یعنی TXT فرستاده می شود.

شاید راهکار بهتری باشد :متفکر:

موفق باشید.

Behrouz1985
پنج شنبه 22 مهر 1389, 13:14 عصر
پیمان عزیز، آیا راهی وجود نداره که برای دسترسی به هر فایلی که روی سرور هست، permission کاربر چک بشه و در صورت عدم اجازه دسترسی، فایل مربوطه با هر پسوندی که باشه رو کاربر نتونه دانلود کنه؟!

raziee
پنج شنبه 22 مهر 1389, 13:22 عصر
ببینید دوستان، من می خوام برای هر کاربری یه کارتابل درست کنم که هر کدوم بتونن فایلهایی رو که می خوان برای مدیر سایت بفرستن که توی کارتابل اون بیاد و هر کاربری بتونه فایلهای مربوط به خودش رو داخل کارتابلش بینه. تعداد کاربرای سایت هم خیلی زیاد نیست.
ولی بخاطر مسایل امنیتی نمی خوام هیچ کس دیگه ای به جز کاربر مربوطه، فایلهاشو ببینه.
اگه صرفاً دانلود باشه روش Peyman.Gh (http://barnamenevis.org/forum/member.php?u=121278) میتونه کمکتون باشه.

اما برای نمایش و مدیریت فایل ها توسط کاربران با مشکل رو به رو هستید.

به این سناریو رو فکر کنید:
فایل ها در یک پوشه آپلود خواهند شد که دسترسی به این پوشه برای هیچ کاربری ممکن نیست.

هر کاربر فایلی رو که آپلود میکنه یک رکورد در دیتابیس ایجاد میشه که نام کاربر ارسال کننده،نام کاربرانی که میتونند فایل رو دانلود کنند و اطلاعات اضافی(دسته بندی، تاریخ آپلود، تعداد دانلود و ...) درش ذخیره میشه.
فایل آپلود شده رو با فیلد کلید اون رکورد ReName میکنیم.

برای نمایش و مدیریت فایل ها رکورد هایی رو درخواست میکنیم که "نام کاربر ارسال کننده" برابر با نام کاربر فعلی باشه.
برای نمایش و دانلود فایل ها رکورد هایی رو درخواست میدیم که "نام کاربران مجاز" برابر با نام کاربر فعلی باشه.

اطلاعات رو به هر طریقی که میدونید از دیتابیس گرفته و در مثلا گرید ویو نمایش میدید.
اگه فایلی برای دانلود کلیک شدن یک درخواست به دیتابیس میدید دوباره سطح دسترسی رو چک میکنید اطلاعات لازم رو Update میکنید و بعد فایل رو به کاربر خواهیم داد.

Behrouz1985
پنج شنبه 22 مهر 1389, 13:33 عصر
با چک کردن دسترسی ها از بانک زیاد مشکل ندارم. حرف من اینه که اصلا فرض کنیم سایت کارشو درست انجام می ده و به هر کاربری فایلهای خودشو نشون می ده و ...
ولی اگه یه نفر اومد توی آدرس بار اسم اون فایلو نوشت، خب نباید این فایلو بتونه بگیره، حالا با هر پسوندی.

raziee
پنج شنبه 22 مهر 1389, 13:57 عصر
ولی اگه یه نفر اومد توی آدرس بار اسم اون فایلو نوشت، خب نباید این فایلو بتونه بگیره، حالا با هر پسوندی.
شما گویا متوجه نشدی دقیق.
یک بار دیگه اون پست بنده رو بخون.

فایل ها در یک پوشه آپلود خواهند شد که دسترسی به این پوشه برای هیچ کاربری ممکن نیست.