مهرداد
5 سال پیش توسط مهرداد مطرح شد
5 پاسخ

محافظت از فایل ها و اعطای مجوز دانلود به کاربر خاص

عرض سلام به همه دوستان عزیز و گرامی

مشکلی برای بنده پیش اومده که سعی میکنم اون رو کامل توضیح بدم.

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

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

چاره کار رو پرسیدم گفتند که باید یک هاست دانلود تهیه کنید و تمامی فایلهایی که میتونن از سوی کاربران دانلود بشن رو روی اون قرار بدید و یه هاست پی اچ پی هم بگیرید و اسکریپت دروپالتون رو روی اون اجرا کنید.
این 2 تیکه شدن باعث شد که کار ما در بیاد. نزدیک 2 روز سر و کله میزدم تا ببینم میشه کاری کرد که مثلا فایلها مثل حالت CDN که روی سرورهای دیگه کپی میشن رو جای دیگه کپی کرد. دیدم میشه و موفق شدم از طریق اف تی پی از داخل اسکریپت دورپال فایلها رو منتقل کنم روی سرور دیگه (سرور دانلود)
تا اینجا خوب بود. اما خب مشکل از اینجا شروع شد.
دروپال 2 نوع سیستم فایل داره . یکی پایلیک و یکی پرایوت.
در مورد فایلهای پابلیک لینک مستقیم میده به فایل . حالا هر جایی که میخواد باشه.
اما در مورد فایلهای پرایوت از اونجاییکه باید قبلش بررسی بشه که ایا مثلا کاربر مجوز دانلود یا دیدن این فایل رو داره لینک مستقیمی در کار نیست. بلکه یه لینک php خود سیستم هست که با یه ساز و کاری یه فانکشنی رو کال میکنه و اون بعد از اینکه دید مجوز دسترسی هست (اگه درست گفته باشم) به صورت استریم فایل رو میرسونه سمت کاربر.

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

دوباره فکر کردم چه کار میشه کرد. به این نتیجه رسیدم که فایلها رو روی سرور دانلود کپی کنیم . بعد یه فایل text یا html درست کنیم و ادرس مستقیم فایلها رو بذاریم داخلش که مثلا وقتی کاربر محصول دانلودی رو خرید. اون فایل تکست باز میشه و محتویاتش به کاربر نشون داده میشه و میه برو از اینجا فایلها رو دانلود کن.

حالا مساله اینجاست. اگه دسترسی ها همینطور روی سرور دانلود باز باشه که هیچی به هیچی. طرف میره سرور دانلود رو جارو میکنه.
گفتم روی این فولدر ها با مکانیزم protected directory که فایل htaccess درست میکنه پسورد گذاشته بشه.

منتها الان طوری هست که حتما باید برای اینکه کاربر بتونه اون لینک ها رو دانلود کنه حتما باید یوزر - پسورد بزنه. حالا اگه با بروزر (مثلا فایرفاکس یا کروم) بزنه یک بار و اگه بخواد مثلا با idm دانلود کنه هم باز باید یوزر پسورد رو بزنه.

اینکه یوزر پسورد اون فولدر رو میدیم به کاربر داره اذیتم میکنه. چون اگه یوزر پسورد رو بره به دیگران بده اونها هم میتونن دانلود کنند.

میخواستم ببینم میشه کاری کرد که بدون اینکه به کاربر یوزر پسورد رو نشون بدیم بهش مجوز دانلود فایل از روی سرور دانلود برای فقط اون فایلهای خاص رو بدیم ؟

یا اینکه اگه باز راه بالا نمیشه. ایا میشه این پسورد ها و یوزر ها رو که کارشون محافظت از فولدرهاست به صورت داینامیک از خارج از هاست دانلود تغییر بدیم . مثلا هر شب پسورد این فولدرها رو به صورت اتوماتیک عوض بشه که امکان سرقت از هاست دانلود به حداقل برسه.

راستش تو این موضوع تجربه ندارم . امیدوارم دوستان با تجربه راهنمایی بفرمایند.

سپاس از همه دوستان عزیز


ثبت پرسش جدید
Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش آپدیت شد
1

سلام @mefa201
ببینید اصول کار به این شکل هست که فایل های دانلود جدا از اسکریپت اصلی خود سایت باشن!
شما 2 راه دارید ، یه سرور اختصاصی یا مجازی بگیرید ، بعد هم فایل ها و هم CMS تون رو بریزید یه جا و .... استفاده کنید ، عین لوکال!
اما اگر بخوایید در هزینه ها صرفه جوییی بشه و کار استاندارد جلو بره ، باید یه هاست دانلود بگیرید یا حتی میتونید سرور مجازی بگیرید
یه هاست هم برای میزبانی سایتتنون!
ساز و کارش اینه که شما با یه رکورد به عنوان مثال:
domain.com
dl3.domain.com رو وصلش میکنید به هاست دانلود یا سرور مجازی
داخل اونجا یا داخل همین هاست ساز و کاری تعیین کنید که احراز هویت کاربر انجام بشه
بعد که انجام شد ، لینک دانلود بهش نمایش داده بشه
حالا یه مسئله ، لینک دانلود رو بده به فرد دیگری هم خب دانلود میشه!
بر اساس سشن میتونید اونطرف هم هندل کنید که سشنی که این طرف ساخته شده رو اون طرف هم چک بشه بعد اجازه دانلود داده بشه

یوزر پس گذاشتن روی دایرکتوری ها کار جالبی نیست و مشکل ساز هست!
توی ASP.NET و IIS راحت تر میشه یوزر پس داد روی دایرکتوری ها ولی تو لینوکس نه ،جالب نیست!
پیشنهاد من ایجاد یه سیستم وی ای پی برای احزار هویت و دانلود هست با دروپال و اینچنین CMS ها زیاد آشنایی ندارم ، اما حالت استانداردش به نظر من به شکلی بود که خدمتتون گفتم ، حالا باز ببینید توی دروپال یا ... همین داستانی هست که بشه هندل کرد یا خیر


مهرداد
@mefa201 5 سال پیش مطرح شد
0

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

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

البته در این حالت هم اگه کاربر لینکشو بده به شخص دیگه ای میتونه اون فایل رو دانلود کنه. برای همین توکن ها دائما تغییر میکنند. البته نمیخوام حساس بشم خیلی. بالاخره اگه کسی بخواد فایلها رو پخش کنه. همین که دانلود کنه میتونه پخششون کنه.
همین که بعد از یه مدتی دسترسی کاربر از روی سرور اصلی به پایان میرسه وقتی اون وب سرویسه کال بشه تو نتیجه اش میگه که کاربر مجاز به دانلود نیست.
ولی اگه بخوام خیلی حساسش کنم میتونم مثلا یک کاری کنم که کاربر حتما در سایت اصلی لاگین کنه و وقتی میخواد فایل رو از روی سرور دانلود برداره ای پی درخواست دهنده دانلود با ای پی کاربری که در سایت اصلی لاگین کرده یکی باشه. ولی خب به نظر خودم نیازی نیست.

نظر شما چیه دوست عزیز و گرامی ؟


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 5 سال پیش مطرح شد
0

درود...
بخوای فایل های شما محافظت بشه تنها راه اینه یک وی پی اس بگیرید و همراه با اسکریپت VIP ...
خود اسکریپت VIP بالاترین رده محافظت از فایل ها رو داره...
با FTPClient هم می توانید مثل VIP انجام بدید...


مهرداد
@mefa201 5 سال پیش مطرح شد
0

سلام و تشکر

میشه یه مقدار در مورد اسکریپت VIP توضیح بدید برام. سپاس از شما


زهرا جوکار
@zahra.jkr 2 سال پیش مطرح شد
0

mefa201@

با سلام و تشکر از مطالبتون
من میخوام این کاری که اخر پیامتون نوشتید رو انجام بدم. اینکه نوشتید:
ولی اگه بخوام خیلی حساسش کنم میتونم مثلا یک کاری کنم که کاربر حتما در سایت اصلی لاگین کنه و وقتی میخواد فایل رو از روی سرور دانلود برداره ای پی درخواست دهنده دانلود با ای پی کاربری که در سایت اصلی لاگین کرده یکی باشه. ولی خب به نظر خودم نیازی نیست.

میشه راهنماییم کنید که چطور باید این کارو انجام بدم؟


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام