PDA

View Full Version : سوال: دانلود فایل از سایت تنها در صورتی که لینک از ضفحات خود سایت رخواست داده شده باشد



majnun
چهارشنبه 31 فروردین 1390, 18:35 عصر
سلام

من در سایتم یک بخش دانلود دارم که میخوام وقتی کاربر عضو بود این لینک دانلود را بهش نشون بدم و بتونه دانلود کنه

لینک مستقیم هست

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

ممنون میشم راهنمایی کنید
نمیدونم منظورمو خوب رسوندم یا نه

b.paseban
چهارشنبه 31 فروردین 1390, 18:49 عصر
سلام بر شما.
میتونی کنترل مورد نظر رو با استفاده از findcontrol پیدا کنی و visible اون رو false کنی.

majnun
چهارشنبه 31 فروردین 1390, 19:28 عصر
عزیز برادر منظور من رو متوجه نشدید شما

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

b.paseban
چهارشنبه 31 فروردین 1390, 19:44 عصر
بلی درسته.::بامزه:

si6arp
پنج شنبه 01 اردیبهشت 1390, 10:29 صبح
شما میتونی از Session استفاده کنی .
مثلا زمانی که کسی عضو و وارد سایت شد آیدی مورد نظر را در یک session قرار بدی :


Session["UserID"] = UserID;


لینک دانلود رو در یک جدول ذخیره کنی و آیدی لینک مورد نظر رو به صورت یک گوئری استرینگ دربیاری و مقدار مورد نظر رو به صفحه دانلود ارسال کنید



http://www.Domain.com/Download.aspx?Url=50440


حال در قسمت کد بیهایند صفحه Download.aspx یه شرط بزاری که اگه session خال نبود بره آیدی مورد نظر که در کوئری استرینگ قرار داره رو از تو دیتابیس بگشه بیرو و لینک دانلود رو در اختیار کاربر قرار بده . در غیر اینصورت با پیغام خطا روبه رو شه.

majnun
پنج شنبه 01 اردیبهشت 1390, 14:33 عصر
عزیز من چیزی که شما میگید بی معنی هست ، خب بعد از اینکه کابر سایتم لینک دانلود اصلی رو گرفت ، دیگه میتونه از این لینک هرجایی که دلش خواست استفاده کنه ، و دیگه سشن معنی نمیده

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

si6arp
پنج شنبه 01 اردیبهشت 1390, 14:45 عصر
بهتره شما یه بار دیگه نوشته من رو بخونی.
نه اینکه لینک دانلود رو بزاری که . مثلا ادرس فایل رو بگیری از دیتا بیس و فایل رو به صورت یه درخواست : Request به کاربر تحویل بده و content رو همون فایل قرار بدی
راجع به Request File Content سرچ کن

raziee
پنج شنبه 01 اردیبهشت 1390, 16:14 عصر
عزیز من چیزی که شما میگید بی معنی هست ، خب بعد از اینکه کابر سایتم لینک دانلود اصلی رو گرفت ، دیگه میتونه از این لینک هرجایی که دلش خواست استفاده کنه ، و دیگه سشن معنی نمیده

این چیزی که میگید لینک رو فقط برای کاربرها نشون میده ، خب بعد از اینکه کاربر لینک را دید دیگه چی میتونه هرکاری خواست باهاش بکنه .....
موضوعی که جناب "si6arp" میفرمایند صحیح هست.
شما میتونید یک Handler بنویسید و درخواست های خودتون رو به این هندلر بفرستید.
http://www.Domain.com/Download.aspx?Url=50440
میتونید مسیر واقعی فایل رو در جایی نگهداری کنید(مثلا دیتابیس) و بعد بوسیله ی کلید مربوطه آدرس فایل رو واکشی کرده ، فایل مربوطه رو درخروجی بنویسید.

چه اتفاقاتی رخ خواهد داد:
در هندلر مربوطه بعد از بعدست آوردن اطلاعات فایل درخواستی و همینطور اطلاعات کاربر درخواست کننده بررسی میکنید که آیا کاربر مجوز خواندن اون فایل رو داره یا نه.
اگر داشت که فایل رو مینویسیم در خروجی و اگر مجوز نداشت بهش پیغام مناسبی میدیم.

خوب حالا این هندلر رو نوشتیم تا آدرس واقعی فایل رو به کاربر نشون ندید. اما اگه کاربری آدرس فایل رو تونست بدست بیاره و اون رو مستقیما درخواست بده چی؟
کاربر فایل رو مشاهده خواهد کرد.
برای رفع این مشکل باید چی کار کنیم؟؟
راه های مختلفی برای این کار هست مثل تغییر پسوند فایل یه یکی از پسوند های محافظت شده توسط IIS.
و یا آپلود اون در یکی از پوشه های محافظت شده مثل APP_DATA.

و یا آپلود فایل ها در پوشه ای مثلا با نام SecureData و معرفی این پوشه به IIS به عنوان پوشه ای که باید محافظت کنه.

<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="SecureData"/>
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>